国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
DataList分頁方法
從Asp.net 1.1開始,我們就開始使用DataGrid、DataList、Repeater控件,到了Asp.net 2.0又增加了GridView控件。GridView控件在DataGrid上做了優(yōu)化和改進,功能很強大,但是自定義性不夠強。Repeater自定義性非常高。而DataList則兼而有之,其他方面本文不談。這里就說下怎么給DataList分頁。

給DataList分頁有兩個辦法:1、自己寫 2、用第三方控件(如AspNetPager

使用第三方控件的方法我就不說了,這里主要說說如何自己實現(xiàn)分頁方法。

我的DataList分頁方法的核心原理是利用PagedDataSource對象,PagedDataSource類封裝了DataGrid 控件的屬性,這些屬性使 DataGrid 可以執(zhí)行分頁,下面是PagedDataSource的公共屬性:

AllowCustomPaging 獲取或設(shè)置指示是否啟用自定義分頁的值。
AllowPaging 獲取或設(shè)置指示是否啟用分頁的值。
Count 獲取要從數(shù)據(jù)源使用的項數(shù)。
CurrentPageIndex 獲取或設(shè)置當前頁的索引。
DataSource 獲取或設(shè)置數(shù)據(jù)源。
DataSourceCount 獲取數(shù)據(jù)源中的項數(shù)。
FirstIndexInPage 獲取頁中的第一個索引。
IsCustomPagingEnabled 獲取一個值,該值指示是否啟用自定義分頁。
IsFirstPage 獲取一個值,該值指示當前頁是否是首頁。
IsLastPage 獲取一個值,該值指示當前頁是否是最后一頁。
IsPagingEnabled 獲取一個值,該值指示是否啟用分頁。
IsReadOnly 獲取一個值,該值指示數(shù)據(jù)源是否是只讀的。
IsSynchronized 獲取一個值,該值指示是否同步對數(shù)據(jù)源的訪問(線程安全)。
PageCount 獲取顯示數(shù)據(jù)源中的所有項所需要的總頁數(shù)。
PageSize 獲取或設(shè)置要在單頁上顯示的項數(shù)。
VirtualCount 獲取或設(shè)置在使用自定義分頁時數(shù)據(jù)源中的實際項數(shù)。

那么如何使用 PagedDataSource對象進行DataList分頁呢?(網(wǎng)上有很多的講DataList分頁的文章,有一些是糊弄人的,有的還無法起作用,我被騙過一次,本文是我經(jīng)過個人實踐經(jīng)驗得到,可以順利執(zhí)行。希望對大家有所幫助。)

現(xiàn)在開始拉!

第一步,取出數(shù)據(jù)到datatable中,然后獲得dataview,付給PagedDataSource對象

DataView objView = objTable.DefaultView;
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = objView;

第二步,PagedDataSource對象objPds的設(shè)置

objPds.AllowPaging = true;
objPds.PageSize = 4;
objPds.CurrentPageIndex = int.Parse(ViewState[“pageindex”].ToString());

上面的這兩段代碼都是寫在BindData()函數(shù)中的,供每次點擊分頁按鈕時調(diào)用。BindData()函數(shù)如下:

private void BindData()
{
string sql = “SELECT * From team”;

DataTable objTable = data.GetDataTable(sql);
if (objTable != null && objTable.Rows.Count > 0)
{
DataView objView = objTable.DefaultView;
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = objView;

objPds.AllowPaging = true;
objPds.PageSize = 4;
objPds.CurrentPageIndex = int.Parse(ViewState[”pageindex”].ToString());

if (!objPds.IsFirstPage)
{
lkPre.Visible = true;
}
else
{
lkPre.Visible = false;
}

if (!objPds.IsLastPage)
{
lkNext.Visible = true;
}
else
{
lkNext.Visible = false;
}

dlData.DataSource = objPds;
dlData.DataBind();
}
}

blockquote>

到此為止,我們已經(jīng)將數(shù)據(jù)交給了PagedDataSource,剩下的分頁將利用PagedDataSource 進行處理??赡艽蠹易⒁獾搅?,這個數(shù)據(jù)交付是完整的數(shù)據(jù)交付,如果數(shù)據(jù)量很大會造成一定的效率低下,不過這里暫時不考慮這個問題。有興趣的朋友可以一起探討一下。

上面的第三行代碼中的 ViewState[“pageindex”] 是用來控制PagedDataSource的當前頁的,我們在Page_Load事件中和第三步將要將的函數(shù)中來具體講解如何利用 ViewState[“pageindex”]控制當前頁。

BindData()函數(shù)中后面的部分是控制向前向后按鈕的顯隱的,不再多說。

第三步,分頁控制

第二步中說過利用 ViewState[“pageindex”] 來控制當前頁,為了在頁面加載的時候就顯示第一頁,我們當然要在Page_load事件中將 ViewState[“pageindex”]置為0。

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState[“pageindex”] = “0″;
BindData(); }
}

我們需要加兩個按鈕(Previous、Next)來點擊進行分頁控制。

<asp:DataList ID=”dlData” runat=”server” RepeatColumns=”4″ >
<ItemTemplate>
<asp:Label ID=”lblName” runat=”server” /><br />
<asp:Label ID=”lblTime” runat=”server” />
</ItemTemplate>
</asp:DataList>
<asp:linkbutton ID=”lkPre” OnCommand=”IndexChanging” CommandArgument=”pre” runat=”server” >PREVIOUS PAGE></asp:linkbutton>
<asp:linkbutton ID=”lkNext” OnCommand=”IndexChanging” CommandArgument=”next” runat=”server” >NEXT PAGE</asp:linkbutton>

兩個按鈕的 OnCommand都是IndexChanging()函數(shù),我們通過CommandArgument(pre和next)來區(qū)分到底是向前翻還是向后翻。下面是IndexChanging()函數(shù)

protected void IndexChanging(object sender, EventArgs e)
{
string strCommand = ((LinkButton)sender).CommandArgument.ToString();

int pageindex = int.Parse(ViewState[“pageindex”].ToString());

if (strCommand == “pre”)
{
pageindex = pageindex - 1;
}
else
{
pageindex = pageindex + 1;
}

ViewState[“pageindex”] = pageindex;

BindData();
}

至此,我們的分頁函數(shù)已經(jīng)寫完了。這里還有一些東西沒有說,比如顯示一共多少條記錄,當前第幾頁,一共多少頁以及每一頁的頁碼。相信看懂了上面所說的后這些東西還是容易寫出來的。

總結(jié)一下,我們在前臺寫好DataList等待數(shù)據(jù),而數(shù)據(jù)是由PagedDataSource提供的,分頁通過我們新加的兩個ImageButton來控制ViewState進而達到控制PagedDataSource的CurrentPageIndex來實現(xiàn)的。所以,其實DataList也沒干啥事,就是顯示了每一頁的數(shù)據(jù)而已。有一點需要說明,PagedDataSource的CurrentPageIndex是從0開始的,這也是為什么在Page_load事件中要講ViewState置為0而不是1的緣故。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ASP.NET自定義控件:實現(xiàn)分頁功能的DataList(10)_設(shè)計家園
ASP.NET數(shù)據(jù)表現(xiàn)控件一些比較常見問題集合
使用PagedDataSource類實現(xiàn)DataList和Repeater控件的分頁顯示功...
(轉(zhuǎn))AspNetPager使用方法
PagedDataSource控制列表控件分頁
DataList分頁
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服