導讀:
注意:本文的源程式代碼用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>