导读:
注意:本文的源程序代码用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"> 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"> <br> </datagrid>
<linkbutton id="btnFirst" runat="server"> Text="首页" <br>CommandArgument="0" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/> Text="首页" <br> CommandArgument="0" <br> ForeColor="navy" <br> Font-Name="verdana" Font-size="8pt" <br> OnClick="PagerButtonClick"/> <br> <br> <linkbutton id="btnPrev" runat="server"> Text="前页" <br>CommandArgument="prev" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/> Text="前页" <br> CommandArgument="prev" <br> ForeColor="navy" <br> Font-Name="verdana" Font-size="8pt" <br> OnClick="PagerButtonClick"/> <br> <br> <linkbutton id="btnNext" runat="server"> Text="后页" <br>CommandArgument="next" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/> Text="后页" <br> CommandArgument="next" <br> ForeColor="navy" <br> Font-Name="verdana" Font-size="8pt" <br> OnClick="PagerButtonClick"/> <br> <br> <linkbutton id="btnLast" runat="server"> Text="末页" <br>CommandArgument="last" <br>ForeColor="navy" <br>Font-Name="verdana" Font-size="8pt" <br>OnClick="PagerButtonClick"/> Text="末页" <br> CommandArgument="last" <br> ForeColor="navy" <br> Font-Name="verdana" Font-size="8pt" <br> OnClick="PagerButtonClick"/> <br> <p> <br> <checkbox id="chk1" runat="server"> Text="显示内置的页数" <br>Font-Name="Verdana" <br>Font-Size="8pt" <br>AutoPostBack="true"/> Text="显示内置的页数" <br> Font-Name="Verdana" <br> Font-Size="8pt" <br> AutoPostBack="true"/> <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"/> Text="首页" <br> CommandArgument="0" <br> ForeColor="navy" <br> Font-Name="verdana" Font-size="8pt" <br> OnClick="PagerButtonClick"/> <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 > 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>