当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  手把手教你如何扩展GridView之个性分页

 手把手教你如何扩展GridView之个性分页

点击次数:17 次 发布日期:2008-11-26 10:45:40 作者:源代码网
源代码网推荐      实现思路和上文的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();
源代码网推荐   }这样就轻而易举的实现了一个个性的分页,欢迎各位大虾拍砖。
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华