天天看点

个性化的分页实例

导读:

  注意:本文的源程序代码用VB和C#同时进行说明。

  我们所知道的分页程序一般都是简单地通过修改DataGrid的属性来实现分页,这样做的最大好处就是简单,用户根本不用知道分页是如何产生的。但它同样有缺点,不能按照用户的需要产生相应的样式。要得到个性化的分页,就必须自己动手编写代码。下面来看一个功能更为强大的分页实例——个性化的分页功能实现。

  完整的程序代码如下:

  

  

  

  

  

  Sub Page_Load(Sender As Object,e As EventArgs)

  '判断是否隐藏PagerStyle-Mode

  if (chk1.Checked) then

  Grid1.PagerStyle.Visible=true

  else

  Grid1.PagerStyle.Visible=false

  end if

  BindGrid

  End Sub

  Sub BindGrid()

  Dim Provider,DataBase,ConnStr,SQL As String

  '第一步: 进行数据库的链接

  Provider="Microsoft.Jet.OLEDB.4.0;"

  DataBase=Server.MapPath("Sample.mdb")

  ConnStr="Provider="+Provider+"Data Source="+DataBase

  '第二步:执行SQL指令,选出记录集合

  Dim Cmd As OleDbDataAdapter

  Cmd=New OleDbDataAdapter("Select * From 学生成绩表",ConnStr)

  Dim ds As DataSet=New DataSet()

  Cmd.Fill(ds,"学生成绩表")

  '第三步:将数据集合同DataGrid结合在一起

  Grid1.DataSource=ds.Tables("学生成绩表").DefaultView

  Grid1.DataBind()

  ShowStats()

  End Sub

  Sub PagerButtonClick(Sender As Object,e As EventArgs)

  '获得LinkButton的参数值

  Dim arg As String =CType(Sender,LinkButton).CommandArgument

  Select Case arg

  case ("next")

  if (Grid1.CurrentPageIndex   Grid1.CurrentPageIndex +=1

  end if

  case ("prev")

  if (Grid1.CurrentPageIndex > 0) then

  Grid1.CurrentPageIndex -=1

  end if

  case ("last")

  Grid1.CurrentPageIndex = (Grid1.PageCount - 1)

  case else

  '本页值

  Grid1.CurrentPageIndex = CInt(arg)

  End Select

  BindGrid

  End Sub

  Sub Grid1_Page(sender As Object, e As DataGridPageChangedEventArgs)

  '处理按下数字的方法

  BindGrid

  End Sub

  Sub ShowStats()

  '显示页面信息

  lblCurrentIndex.Text = "当前页数为: " &(Grid1.CurrentPageIndex+1)

  lblPageCount.Text = "总页数是: " &Grid1.PageCount

  End Sub

  

  

  

个性化的分页实例

  

  <?XML:NAMESPACE PREFIX = ASP /><datagrid id="Grid1" runat="server"> AllowPaging="True" <br>PageSize="5" <br>PagerStyle-Mode="NumericPages" <br>PagerStyle-HorizontalAlign="Right" <br>OnPageIndexChanged="Grid1_Page" <br>BorderColor="black" <br>BorderWidth="1" <br>GridLines="Both" <br>CellPadding="3" <br>CellSpacing="0" <br>Font-Name="Verdana" <br>Font-Size="8pt" <br>HeaderStyle-BackColor="#aaaadd" <br>AlternatingItemStyle-BackColor="#eeeeee" <br>AutoGenerateColumns="true"&gt;  AllowPaging="True" <br>  PageSize="5" <br>  PagerStyle-Mode="NumericPages" <br>  PagerStyle-HorizontalAlign="Right" <br>  OnPageIndexChanged="Grid1_Page" <br>  BorderColor="black" <br>  BorderWidth="1" <br>  GridLines="Both" <br>  CellPadding="3" <br>  CellSpacing="0" <br>  Font-Name="Verdana" <br>  Font-Size="8pt" <br>  HeaderStyle-BackColor="#aaaadd" <br>  AlternatingItemStyle-BackColor="#eeeeee" <br>  AutoGenerateColumns="true"&gt; <br>  </datagrid>

  

  <linkbutton id="btnFirst" runat="server"> Text="首页" <br>CommandArgument="0" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/&gt;  Text="首页" <br>  CommandArgument="0" <br>  ForeColor="navy" <br>  Font-Name="verdana" Font-size="8pt" <br>  OnClick="PagerButtonClick"/&gt; <br>   <br>  <linkbutton id="btnPrev" runat="server"> Text="前页" <br>CommandArgument="prev" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/&gt;  Text="前页" <br>  CommandArgument="prev" <br>  ForeColor="navy" <br>  Font-Name="verdana" Font-size="8pt" <br>  OnClick="PagerButtonClick"/&gt; <br>   <br>  <linkbutton id="btnNext" runat="server"> Text="后页" <br>CommandArgument="next" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/&gt;  Text="后页" <br>  CommandArgument="next" <br>  ForeColor="navy" <br>  Font-Name="verdana" Font-size="8pt" <br>  OnClick="PagerButtonClick"/&gt; <br>   <br>  <linkbutton id="btnLast" runat="server"> Text="末页" <br>CommandArgument="last" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/&gt;  Text="末页" <br>  CommandArgument="last" <br>  ForeColor="navy" <br>  Font-Name="verdana" Font-size="8pt" <br>  OnClick="PagerButtonClick"/&gt; <br>  <p> <br>  <checkbox id="chk1" runat="server"> Text="显示内置的页数" <br>Font-Name="Verdana" <br>Font-Size="8pt" <br>AutoPostBack="true"/&gt;  Text="显示内置的页数" <br>  Font-Name="Verdana" <br>  Font-Size="8pt" <br>  AutoPostBack="true"/&gt; <br>  <p> <br>  </p> <table bgcolor="#eeeeee" cellpadding="6"><tr><td nowrap><font size="-2"> <br>  <label id="lblCurrentIndex" runat="server"></label><br><br>  <label id="lblPageCount" runat="server"></label><br><br>  </font></td></tr></table> <br>  </checkbox></p></linkbutton></linkbutton></linkbutton></linkbutton>

  

  

  上面程序中的DataGrid控制元件的布置标记并没有什么特别之处,通过布置4个LinkButton控制元件来实现个性化分页,例如:

  <linkbutton id="btnFirst" runat="server"> Text="首页" <br>CommandArgument="0" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/&gt;  Text="首页" <br>  CommandArgument="0" <br>  ForeColor="navy" <br>  Font-Name="verdana" Font-size="8pt" <br>  OnClick="PagerButtonClick"/&gt; <br>  可以看出LinkButton的OnClick触发的是PagerButtonClick事件,程序代码如下: <br>  Sub PagerButtonClick(Sender As Object,e As EventArgs) <br>  '获得LinkButton的参数值 <br>  Dim arg As String =CType(Sender,LinkButton).CommandArgument <br>  Select Case arg <br>  case ("next") <br>  if (Grid1.CurrentPageIndex   Grid1.CurrentPageIndex +=1 <br>  end if <br>  case ("prev") <br>  if (Grid1.CurrentPageIndex &gt; 0) then <br>  Grid1.CurrentPageIndex -=1 <br>  end if <br>  case ("last") <br>  Grid1.CurrentPageIndex = (Grid1.PageCount - 1) <br>  case else <br>  '本页值 <br>  Grid1.CurrentPageIndex = CInt(arg) <br>  End Select <br>  BindGrid <br>  End Sub <br>  在这个事件处理程序之中,取得LinkButton的参数值,求出Grid1的当前页面索引值。操作的也只是DataGrid的CurrentPageIndex属性。如果CurrentPageIndex小于Pag <br><br>本文转自 <br><a href="http://study.qqcf.com/web/224/24042.htm" target="_blank" rel="external nofollow" >http://study.qqcf.com/web/224/24042.htm</a> </linkbutton>