日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DataList自定义分页

發布時間:2025/6/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataList自定义分页 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Asp.net里頭,像DataList,Repeater,DataGrid,GridView,FormView包括Asp.net3.5中的ListView這幾種服務器數據綁定控件,是在開發中經常需要用到的,撇開Asp.net3.5(因為3.5的版本有帶分頁的控件),DataGrid是1.1版本中很強大的控件,GridView則是2.0中有的,其實就是DataGrid的升級版,他們自身都帶有分頁功能,只需設置下屬性,而DataList和Repeater則沒有,下面就以DataList為例實現自定義分頁.
??????首先,先來看一個類:PagedDataSource其成員如下:
名稱 說明
AllowCustomPaging 獲取或設置一個值,指示是否在數據綁定控件中啟用自定義分頁。
AllowPaging 獲取或設置一個值,指示是否在數據綁定控件中啟用分頁。
AllowServerPaging 獲取或設置一個值,指示是否啟用服務器端分頁。
Count 獲取要從數據源使用的項數。
CurrentPageIndex 獲取或設置當前頁的索引。
DataSource 獲取或設置數據源。
DataSourceCount 獲取數據源中的項數。
FirstIndexInPage 獲取頁面中顯示的首條記錄的索引。
IsCustomPagingEnabled 獲取一個值,該值指示是否啟用自定義分頁。
IsFirstPage 獲取一個值,該值指示當前頁是否是首頁。
IsLastPage 獲取一個值,該值指示當前頁是否是最后一頁。
IsPagingEnabled 獲取一個值,該值指示是否啟用分頁。
IsReadOnly 獲取一個值,該值指示數據源是否是只讀的。
IsServerPagingEnabled 獲取一個值,指示是否啟用服務器端分頁支持。
IsSynchronized 獲取一個值,該值指示是否同步對數據源的訪問(線程安全)。
PageCount 獲取顯示數據源中的所有項所需要的總頁數。
PageSize 獲取或設置要在單頁上顯示的項數。
SyncRoot 獲取可用于同步集合訪問的對象。
VirtualCount 獲取或設置在使用自定義分頁時數據源中的實際項數。
??????有發現什么沒?可以看到這些屬性在GridView等有內置分頁的控件中是類似的,所以這些有內置分頁的控件也是通過該類實現分頁的,那下來就好辦了
前臺Html代碼:
共:<asp:Label??id="lblPageTotal"?runat="server"></asp:Label>頁???
<asp:LinkButton?id="lbFirst"?onclick="PagerButton_Click"?runat="server"?CommandArgument="first">首?頁</asp:LinkButton>?
<asp:LinkButton??id="lbPrev"?onclick="PagerButton_Click"?runat="server"?CommandArgument="prev">上一頁</asp:LinkButton>?
<asp:LinkButton??id="lbNext"?onclick="PagerButton_Click"?runat="server"?CommandArgument="next">下一頁</asp:LinkButton>?
<asp:LinkButton?id="lbLast"?onclick="PagerButton_Click"?runat="server"?CommandArgument="last">尾?頁</asp:LinkButton>???
當前:第
<asp:Label??id="lblCurrentPage"?runat="server"></asp:Label>頁???
跳轉至:第
<asp:DropDownList?ID="ddlPage"?runat="server"?AutoPostBack="true"?OnSelectedIndexChanged="ddlPage_SelectedIndexChanged"></asp:DropDownList>后臺.cs代碼:
Code
protected?void?Page_Load(object?sender,?EventArgs?e)
{
???
if?(!IsPostBack)
???{
??????ViewState[
"PageIndex"]?=?"0";?//第一次生成,頁碼索引置0
??????this.BindGrid();

??????ddlPage.Items.Clear();
??????
for?(int?i?=?0;?i?<?Int32.Parse(lblPageTotal.Text);?i++)
??????{
?????????
string?itemText?=?(i?+?1).ToString();
?????????ddlPage.Items.Add(
new?ListItem(itemText,?itemText));
??????}
???}
}
綁定數據源的方法
Code
private?void?BindGrid()
{
????DataTable?table?
=?this.CreateTable();??//CreateTable這個方法就是獲取數據源的了,這里不貼了
????if?(table.Rows.Count?>?0)
????{
????????
//對PagedDataSource?對象的相關屬性賦值
?????????objPDS?=?new?PagedDataSource();
????????objPDS.DataSource?
=?table.DefaultView;
????????objPDS.AllowPaging?
=?true;
????????objPDS.PageSize?
=?this.ListSize;??//ListSize屬性用于設置每頁顯示多少條,可以直接指定
????????objPDS.CurrentPageIndex?=?int.Parse(ViewState["PageIndex"].ToString());

????????lbFirst.Enabled?
=?true;
????????lbPrev.Enabled?
=?true;
????????lbNext.Enabled?
=?true;
????????lbLast.Enabled?
=?true;
????????
//判斷當前頁是否首頁
?????????if?(objPDS.IsFirstPage)
????????{
????????????lbFirst.Enabled?
=?false;
????????????lbPrev.Enabled?
=?false;
????????}
????????
//判斷當前頁是否尾頁
?????????if?(objPDS.IsLastPage)
????????{
????????????lbNext.Enabled?
=?false;
????????????lbLast.Enabled?
=?false;
????????}
????????
this.dl_LinkList.DataSource?=?objPDS;
????????
this.dl_LinkList.DataBind();

????????lblPageTotal.Text?
=?objPDS.PageCount.ToString();
????????lblCurrentPage.Text?
=?(objPDS.CurrentPageIndex?+?1).ToString();
?????}
?????
else
?????{
????????
this.dl_LinkList.DataSource?=?table;
????????
this.dl_LinkList.DataBind();
?????}
}
觸發分頁按鈕的事件
Code
protected?void?PagerButton_Click(object?sender,?EventArgs?e)
{
???
string?arg?=?((LinkButton)sender).CommandArgument.ToString().ToLower();
???
int?pageIndex?=?int.Parse(ViewState["PageIndex"].ToString());
???
switch?(arg)
???{
???????
case?"first":
????????????pageIndex?
=?0;
????????????
break;
???????
case?"last":
????????????
int?itemCount?=?this.GetDataSource().Rows.Count;
????????????
int?totalPage?=?itemCount?%?this.ListSize?==?0???itemCount?/?ListSize?:?itemCount?/?(ListSize?+?1);
????????????pageIndex?
=?totalPage?-?1;
????????????
break;
???????
case?"prev":
????????????pageIndex?
=?pageIndex?-?1;
????????????
break;
???????
case?"next":
????????????pageIndex?
=?pageIndex?+?1;
????????????
break;
????}
????ViewState[
"PageIndex"]?=?pageIndex;
????
this.BindGrid();
????ddlPage.SelectedIndex?
=?pageIndex;
}
觸發下拉框的事件
Code
protected?void?ddlPage_SelectedIndexChanged(object?sender,?EventArgs?e)
{
???ViewState[
"PageIndex"]?=?Int32.Parse(ddlPage.SelectedValue)-1;
???
this.BindGrid();
???ddlPage.SelectedIndex?
=?Int32.Parse(ViewState["PageIndex"].ToString());
}
代碼很簡單,就不解釋了...要注意的是,下拉框要在頁面載入的時候初始化,不然觸發不到下拉框的事件.

轉載于:https://www.cnblogs.com/py891021/archive/2009/08/19/1549559.html

總結

以上是生活随笔為你收集整理的DataList自定义分页的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。