gridview 中自定义分页

在gridview 的分页当中,

是相当的个抑郁,

有1 2 3 的地方没有向上向下,

有向上向下的地方又没有1 2 3 导航

所以抽了个空自定义了一个,效果给大家看下

当然  没有大动干戈的重写一个gridview 控件

而是写了一个pageManager 类来对gridview 的page进行控制

ok,个人认为注释还凑合

代码如下

 

  1 using  System;
  2 using  System.Data;
  3 using  System.Configuration;
  4 using  System.Web;
  5 using  System.Web.Security;
  6 using  System.Web.UI;
  7 using  System.Web.UI.HtmlControls;
  8 using  System.Web.UI.WebControls;
  9 using  System.Web.UI.WebControls.WebParts;
 10 using  System.Drawing;
 11
 12 ExpandedBlockStart.gifContractedBlock.gif /**/ /// <summary>
 13///Pager 的摘要说明
 14/// </summary>

 15
 16
 17 ExpandedBlockStart.gifContractedBlock.gif /**/ /*=========================彪悍的分割线============================================
 18 * 时间:2008年9月24日1:30:21 
 19 * 作者:ATPKING
 20 * 内容:分页管理类
 21 * 功能描述:实现自定义的GridView 的分页控件
 22 * 测试人:ATPKING
 23 * 测试代码:
 24      XianPGL.aspx 中测试通过
 25 * 测试结论:能将GridView自定义一个分页
 26 ==========================彪悍的分割线============================================*/

 27 public   class  PagerManager
 28 ExpandedBlockStart.gifContractedBlock.gif {
 29    private GridView _gridview;
 30    
 31    public PagerManager()
 32ExpandedSubBlockStart.gifContractedSubBlock.gif    
 33    }

 34    public PagerManager(GridView gridview)
 35ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 36        _gridview = gridview;
 37    }

 38ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
 39    /// 将gridview 启动自定义分页
 40    /// </summary>

 41    public void doPaging()
 42ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 43        _gridview.AllowPaging = true;//将gridview 允许分页打开
 44        _gridview.PageIndexChanging += new GridViewPageEventHandler(_gridview_PageIndexChanging);//注册分页事件
 45        _gridview.RowCreated += new GridViewRowEventHandler(_gridview_RowCreated);//注册row绑定事件
 46    }

 47    public void doPaging(GridView g)
 48ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 49        _gridview = g;
 50        doPaging();
 51    }

 52ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
 53    /// 将gridview 启动自定义分页
 54    /// </summary>
 55    /// <param name="page">一页的行数</param>

 56    public void doPaging(int page) 
 57ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 58        _gridview.PageSize = page;
 59        doPaging();
 60    }

 61ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
 62    /// 将gridview 启动自定义分页
 63    ///  </summary>
 64    /// <param name="page">一页的行数</param>
 65    /// <param name="g">对应的Grid</param>

 66    public void doPaging(int page, GridView g)
 67ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 68        _gridview = g;
 69        _gridview.PageSize = page;
 70
 71        doPaging();
 72    }

 73    void _gridview_RowCreated(object sender, GridViewRowEventArgs e)
 74ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 75        if (e.Row.RowType == DataControlRowType.Pager)//当生成pager行时候
 76ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 77ContractedSubBlock.gifExpandedSubBlockStart.gif            声明“第一页”、“前一页”、“后一页”、“最后页”、“页提示信息”#region 声明“第一页”、“前一页”、“后一页”、“最后页”、“页提示信息”
 78            Label label_Index = new Label();
 79            LinkButton Button_IndexFirst = new LinkButton();
 80            LinkButton Button_IndexLast = new LinkButton();
 81            LinkButton Button_IndexNext = new LinkButton();
 82            LinkButton Button_IndexPrevious = new LinkButton();
 83
 84            Button_IndexFirst.Text = "第一页 ";
 85            Button_IndexFirst.CommandName = "first";
 86            Button_IndexFirst.ForeColor = Color.Blue;
 87            Button_IndexFirst.Command += new CommandEventHandler(PageButtonClick);//注册点击事件
 88
 89
 90            Button_IndexNext.Text = "  下一页 ";
 91            Button_IndexNext.CommandName = "next";
 92            Button_IndexNext.ForeColor = Color.Blue;
 93            Button_IndexNext.Command += new CommandEventHandler(PageButtonClick);//注册点击事件
 94
 95
 96            Button_IndexPrevious.Text = "前一页 ";
 97            Button_IndexPrevious.CommandName = "previous";
 98            Button_IndexPrevious.ForeColor = Color.Blue;
 99
100            Button_IndexPrevious.Command += new CommandEventHandler(PageButtonClick);//注册点击事件
101
102
103            Button_IndexLast.Text = "最末页 ";
104            Button_IndexLast.CommandName = "last";
105            Button_IndexLast.ForeColor = Color.Blue;
106
107            Button_IndexLast.Command += new CommandEventHandler(PageButtonClick);
108            label_Index.Text = "当前为第" + (((GridView)sender).PageIndex + 1+ "页,共有" + ((GridView)sender).PageCount + "";
109            #endregion

110
111            TableCell tmp = e.Row.Cells[0];// 读到系统的分页
112            tmp.Controls.Add(Button_IndexFirst);//将几个按钮添加在系统分页后面
113            tmp.Controls.Add(Button_IndexNext);
114            tmp.Controls.Add(Button_IndexPrevious);
115            tmp.Controls.Add(Button_IndexLast);
116            tmp.Controls.Add(label_Index);
117
118
119        }

120    }

121
122    void PageButtonClick(object sender, EventArgs e)
123ExpandedSubBlockStart.gifContractedSubBlock.gif    {
124        GridView tmpGridView = (GridView)((((((LinkButton)sender).Parent).Parent).Parent).Parent);//寻找到Button的祖孙控件GridView
125        LinkButton clickedButton = ((LinkButton)sender);
126        if (clickedButton.CommandName == "first")//当引发事件的按钮命令为First时
127ExpandedSubBlockStart.gifContractedSubBlock.gif        {
128            tmpGridView.PageIndex = 0;
129            tmpGridView.DataBind();
130        }

131        else if (clickedButton.CommandName == "next")
132ExpandedSubBlockStart.gifContractedSubBlock.gif        {
133            if (tmpGridView.PageIndex < tmpGridView.PageCount - 1)
134ExpandedSubBlockStart.gifContractedSubBlock.gif            {
135                tmpGridView.PageIndex = tmpGridView.PageIndex + 1;
136                tmpGridView.DataBind();
137            }

138        }

139        else if (clickedButton.CommandName == "previous")
140ExpandedSubBlockStart.gifContractedSubBlock.gif        {
141            if (tmpGridView.PageIndex >= 1)
142ExpandedSubBlockStart.gifContractedSubBlock.gif            {
143                tmpGridView.PageIndex -= 1;
144                tmpGridView.DataBind();
145            }

146        }

147        else if (clickedButton.CommandName == "last")
148ExpandedSubBlockStart.gifContractedSubBlock.gif        {
149            tmpGridView.PageIndex = tmpGridView.PageCount - 1;
150            tmpGridView.DataBind();
151        }

152    }

153    void _gridview_PageIndexChanging(object sender, GridViewPageEventArgs e)
154ExpandedSubBlockStart.gifContractedSubBlock.gif    {
155        _gridview.PageIndex = e.NewPageIndex;
156        _gridview.DataBind();
157    }

158}

159

调用的时候非常方便,就在相应的地方实例化一个对象,之后执行dopaging 就ok

使用代码如下

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using System.Drawing;

public partial class XiTGL_XianPGL : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {

            PagerManager pm 
= new PagerManager();
            pm.doPaging(
10,GridView1);//进行分页操作,数字为每页可有多少数据
              GridView1.AllowPaging = true;
             GridView1.DataBind();
        }
    }


}

 

 

ok,还是比较简单,当然有高手还是重写了gridview    只不过个人认为还是有点杀鸡用牛刀哦。

好了,本人应届毕业生 囧,还请各位看官多多指教

转载于:https://www.cnblogs.com/jicheng1014/archive/2008/09/24/1298107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GridView是一个非常常用的ASP.NET控件,它可以方便地呈现数据,并且支持分页功能。在GridView,可以使用内置的分页样式,也可以自定义分页样式。下面我将介绍两种自定义分页样式。 1. 自定义分页样式一:使用自定义模板 GridView提供了一个PagerTemplate属性,可以使用这个属性来自定义分页模板。下面是一个简单的例子: ```html <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" /> <asp:BoundField DataField="Name" HeaderText="Name" /> <asp:BoundField DataField="Age" HeaderText="Age" /> </Columns> <PagerTemplate> <div class="pagination"> <span>共<%# GridView1.PageCount %>页,当前第<%# GridView1.PageIndex+1 %>页</span> <ul> <li><a href="#" onclick="javascript:__doPostBack('GridView1','Page', '<%= GridView1.PageIndex-1 %>')">上一页</a></li> <% for (int i = 0; i < GridView1.PageCount; i++) { %> <li <% if (GridView1.PageIndex == i) { %>class="active"<% } %>><a href="#" onclick="javascript:__doPostBack('GridView1','Page', '<%= i %>')"><%= i+1 %></a></li> <% } %> <li><a href="#" onclick="javascript:__doPostBack('GridView1','Page', '<%= GridView1.PageIndex+1 %>')">下一页</a></li> </ul> </div> </PagerTemplate> </asp:GridView> ``` 在这个例子,我们使用PagerTemplate属性定义了一个分页模板。该模板包含一个div元素,用于包含分页控件。在div元素,我们使用了一些HTML代码和ASP.NET表达式来生成分页控件。 在分页控件,我们使用了一个ul元素和一些li元素来呈现页码。在每个li元素,我们使用了一个a元素和一个onclick事件来触发GridView分页功能。在onclick事件,我们使用了一个__doPostBack函数来向服务器发送分页请求,并且传递了两个参数:GridView的ID和分页索引。 2. 自定义分页样式二:使用第三方分页插件 除了使用自定义模板之外,我们还可以使用第三方分页插件来自定义GridView分页样式。下面是一个使用Bootstrap Paginator插件的例子: ```html <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnPageIndexChanging="GridView1_PageIndexChanging"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" /> <asp:BoundField DataField="Name" HeaderText="Name" /> <asp:BoundField DataField="Age" HeaderText="Age" /> </Columns> </asp:GridView> <div id="pagination"></div> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-paginator/2.2.5/bootstrap-paginator.min.js"></script> <script> $(function () { $('#pagination').bootstrapPaginator({ currentPage: <%= GridView1.PageIndex+1 %>, totalPages: <%= GridView1.PageCount %>, onPageChanged: function (e, oldPage, newPage) { __doPostBack('GridView1', 'Page', newPage-1); } }); }); </script> ``` 在这个例子,我们使用了Bootstrap Paginator插件来自定义分页样式。在页面加载完成之后,我们使用jQuery选择器选了一个id为pagination的div元素,并且调用了bootstrapPaginator函数来初始化分页控件。在bootstrapPaginator函数,我们传递了三个参数:当前页码、总页码数和一个回调函数。在回调函数,我们使用__doPostBack函数向服务器发送分页请求,并且传递了两个参数:GridView的ID和分页索引。 这两种自定义分页样式都非常简单易懂,可以根据自己的需求进行选择和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值