如何扩展GridView之个性分页

原创 2007年09月29日 12:30:00
实现思路和上文的Excel和Word导出是一样的,就是在GridView中添加行,首先声明以下控件,用于显示页次:第几页,共多少页,多少记录,首页,上一页,下一页,尾页
用于分页的控件
  Label lblCurrentPage;
        Label lblPageCount;
        Label lblRowsCount;
        LinkButton btnFirst;
        LinkButton btnPrev;
        LinkButton btnNext;
        LinkButton btnLast;在GridView的OnInit方法中,初始化这些控件
在控件的Oninit方法初始化分页控件
 protected override void OnInit(EventArgs e)
        {
            this.EnableViewState = true;         

            lblCurrentPage = new Label();
            lblCurrentPage.ForeColor = ColorTranslator.FromHtml("#e78a29");
            lblCurrentPage.Text = "1";

            lblPageCount = new Label();
            lblPageCount.Text = "1";


            lblRowsCount = new Label();
            lblRowsCount.ForeColor = ColorTranslator.FromHtml("#e78a29");

            btnFirst = new LinkButton();
            btnFirst.Text = "首页";
            btnFirst.Command += new CommandEventHandler(NavigateToPage);
            btnFirst.CommandName = "Pager";
            btnFirst.CommandArgument = "First";

            btnPrev = new LinkButton();
            btnPrev.Text = "上一页";
            btnPrev.Command += new CommandEventHandler(NavigateToPage);
            btnPrev.CommandName = "Pager";
            btnPrev.CommandArgument = "Prev";

            btnNext = new LinkButton();
            btnNext.Text = "下一页";
            btnNext.Command += new CommandEventHandler(NavigateToPage);
            btnNext.CommandName = "Pager";
            btnNext.CommandArgument = "Next";

            btnLast = new LinkButton();
            btnLast.Text = "尾页";
            btnLast.Command += new CommandEventHandler(NavigateToPage);
            btnLast.CommandName = "Pager";
            btnLast.CommandArgument = "Last";

            base.OnInit(e);
        }

然后是关键部分的代码,就是将这些控件如何添加到GridView中,通过在创建子控件的方式,如下:
在创建子控件的方法中添加分页控件
   protected override int CreateChildControls(System.Collections.IEnumerable dataSource, bool dataBinding)
        {
            int res = base.CreateChildControls(dataSource, dataBinding);
            if (ShowToolBar)
            {
                try
                {
                    GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Pager, DataControlRowState.Normal);
                    TableCell c = new TableCell();
                    c.Width = Unit.Percentage(100);
                    c.ColumnSpan = this.Columns.Count;                 
                    row.Cells.Add(c);
                    TableCell cell1 = new TableCell();
                    Table table = new Table();
                    TableRow r = new TableRow();
                    table.Rows.Add(r);
                    table.Width = Unit.Percentage(100);
                    c.Controls.Add(table);
                    r.Cells.Add(cell1);
                    Literal l1 = new Literal();
                    l1.Text = "页次:";
                    cell1.Controls.Add(l1);
                    cell1.Wrap = false;
                    cell1.Controls.Add(lblCurrentPage);
                    l1 = new Literal();
                    l1.Text = "页/";
                    cell1.Controls.Add(l1);
                    cell1.Controls.Add(lblPageCount);
                    l1 = new Literal();
                    l1.Text = "页,共";
                    cell1.Controls.Add(l1);
                    cell1.Controls.Add(lblRowsCount);
                    l1 = new Literal();
                    l1.Text = "条记录";
                    cell1.HorizontalAlign = HorizontalAlign.Left;
                    cell1.Controls.Add(l1);
                    TableCell cell2 = new TableCell();
                    cell2.HorizontalAlign = HorizontalAlign.Right;
                    cell2.Wrap = false;        


                    l1 = new Literal();
                    l1.Text = " [";
                    cell2.Controls.Add(l1);
                    cell2.Controls.Add(btnFirst);
                    l1 = new Literal();
                    l1.Text = "] ";
                    cell2.Controls.Add(l1);

                    l1 = new Literal();
                    l1.Text = " [";
                    cell2.Controls.Add(l1);
                    cell2.Controls.Add(btnPrev);
                    l1 = new Literal();
                    l1.Text = "] ";
                    cell2.Controls.Add(l1);

                    l1 = new Literal();
                    l1.Text = " [";
                    cell2.Controls.Add(l1);
                    cell2.Controls.Add(btnNext);
                    l1 = new Literal();
                    l1.Text = "] ";
                    cell2.Controls.Add(l1);

                    l1 = new Literal();
                    l1.Text = " [";
                    cell2.Controls.Add(l1);
                    cell2.Controls.Add(btnLast);
                    l1 = new Literal();
                    l1.Text = "] ";
                    cell2.Controls.Add(l1);
                    r.Cells.Add(cell2);
                    this.Controls[0].Controls.AddAt(0, row);
                }
                catch
                {
                }
            }
            return res;
        }下面就是处理分页的事件,类似于RowCommand
 public void NavigateToPage(object sender, CommandEventArgs e)
        {
            btnFirst.Enabled = true;
            btnPrev.Enabled = true;
            btnNext.Enabled = true;
            btnLast.Enabled = true;
            switch (e.CommandArgument.ToString())
            {
                case "Prev":
                    if (this.PageIndex > 0)
                    {
                        this.PageIndex -= 1;

                    }
                    break;
                case "Next":
                    if (this.PageIndex < (this.PageCount - 1))
                    {
                        this.PageIndex += 1;

                    }
                    break;
                case "First":
                    this.PageIndex = 0;
                    break;
                case "Last":
                    this.PageIndex = this.PageCount - 1;
                    break;
            }
            if (this.PageIndex == 0)
            {
                btnFirst.Enabled = false;
                btnPrev.Enabled = false;
                if (this.PageCount == 1)
                {
                    btnLast.Enabled = false;
                    btnNext.Enabled = false;
                }
            }
            else if (this.PageIndex == this.PageCount - 1)
            {
                btnLast.Enabled = false;
                btnNext.Enabled = false;
            }
            OnBind();
        }

asp.net 中gridview控件分页的实现

要在GridView中加入 //实现分页 AllowPaging="true" //一页数据10行 PageSize="10" // 分页时触发的事件 OnPageIndexChangin...
  • uniqer
  • uniqer
  • 2012年07月17日 18:04
  • 5783

Webform gridView分页

分页详解: 从工具栏中拖拽Gridview数据控件; (1)设置数据 AllowPaging=”True”;并自定义每页显示的数目 PageSize=”10”; 同时设置页索引改变事件:...
  • qq_31975127
  • qq_31975127
  • 2016年08月29日 15:01
  • 461

让GridView在大数据集时高效的分页

让GridView在大数据集时高效的分页 让GridView在大数据集时高效的分页在ASP.NET 1.1下有一个很好用的数据列表显示控件DataGrid,他有一个专门的设置数据记录数的属性"Virt...
  • frankwang2008
  • frankwang2008
  • 2007年08月17日 21:52
  • 1984

Android中如何实现多行、水平滚动的分页的Gridview?

功能要求: (1)比如每页显示2X2,总共2XN,每个item显示图片+文字(点击有链接)。 如果单行水平滚动,可以用Horizontalscrollview实现。 如果是多行水平滚动,则结合G...
  • wuzoujing
  • wuzoujing
  • 2013年06月08日 10:19
  • 25084

GridView自身的分页功能的使用方法

用一下,就是把返回的数据集再按GridView中的页大小再拆分一下显示 如返回200条,GridView每页20条,那页便是有10页,每次点上一页或是下一页时,都会去数据库里取回来200条数据,再拆...
  • ty_soft
  • ty_soft
  • 2012年02月24日 19:47
  • 1020

asp.net的GridView通用分页程序(Oracle)

分页是数据库类的重要程序之一, 分页对于大数据量的往往需要用到存贮过程。这个研究网上也有不少,而本文的则是普通的SQL语句的分页程序。Oracle的操作在.net下不同与MS SQL,所以使用的是Da...
  • longronglin
  • longronglin
  • 2007年03月27日 15:54
  • 3541

GridView+存储过程实现'真分页'

GridView,ASP.NET中的表格控件,和Repeater控件一样,在ASP.NET中都是很常用的两个表格控件,GridView自己也有分页功能,实现是将一张表的数据全部绑定到GridView,...
  • akkzhjj
  • akkzhjj
  • 2014年03月15日 16:40
  • 3210

在GRIDVIEW中实现完美自定义分页

前台ASPX代码                                                                                            ...
  • jjzaihaozhe
  • jjzaihaozhe
  • 2007年08月18日 15:18
  • 657

GridView万能分页代码

虽然GridView拥有自带分页功能,但很多时候总感觉它太简单了,不贴和实际,所以我们现在来修改一下,让它更使用。 在之间加入如下代码: ">首页 ">前页 ...
  • yangmingxing980
  • yangmingxing980
  • 2014年03月24日 11:45
  • 1287

GridView控件实现分页功能

初识ASP.NET中的控件,还是折腾了一小会儿,就把我折腾的结果给大家看看: 表格显示数据时网站开发中的一个常见的功能,ASP.NET提供了很多工具在网页中显示表格,GridView控件就是最常见的...
  • wangboxian
  • wangboxian
  • 2012年04月14日 10:37
  • 23436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何扩展GridView之个性分页
举报原因:
原因补充:

(最多只允许输入30个字)