手把手教你如何扩展GridView之个性分页
点击次数:17 次 发布日期:2008-11-26 10:45:40 作者:源代码网
|
源代码网推荐 用于分页的控件 源代码网推荐 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)。 源代码网推荐 源代码网供稿. |
