程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> GridView之個性分頁

GridView之個性分頁

編輯:.NET實例教程

實現思路和上文的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":
 &nbsp; 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();
   } 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved