[英]custom paging in gridview
我正在尋找gridview(或任何數據綁定控件)的分頁(頂部,底部)功能
我正在使用.net framework 2.0。
我想有指點
謝謝
解決方案:我使用jQuery插件jquery.tablePagination.0.1.js作為我的解決方案
您可以使用asp:repeater,這可以通過Repeater控件輕松處理。
This aspx page code
<asp:Repeater ID="rptImages" runat="server" onitemcommand="rptImages_ItemCommand">
<ItemTemplate >
<div class="image"> <a ><asp:Image ID="Image1" runat="server" imageUrl=' <%# Eval("ImageUrl") %>' /></a> </div>
</ItemTemplate>
</asp:Repeater>
<asp:Repeater ID="rptPages" Runat="server"
onitemcommand="rptPages_ItemCommand">
<HeaderTemplate>
<table cellpadding="0" cellspacing="0" border="0">
<tr class="text">
<td><b style="color:White;">Page:</b> </td>
<td>
</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton ID="btnPage" ForeColor="White"
CommandName="Page"
CommandArgument="<%#
Container.DataItem %>"
CssClass="text"
Runat="server"><%# Container.DataItem %>
</asp:LinkButton>
</ItemTemplate>
<FooterTemplate>
</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
this code behind page code
public void LoadData()
{
try
{
PagedDataSource pgitems = new PagedDataSource();
DataView dv = new DataView(dtImage);
pgitems.DataSource = dv;
pgitems.AllowPaging = true;
pgitems.PageSize = 8;
pgitems.CurrentPageIndex = PageNumber;
if (pgitems.PageCount > 1)
{
rptPages.Visible = true;
ArrayList pages = new ArrayList();
for (int i = 0; i < pgitems.PageCount; i++)
pages.Add((i + 1).ToString());
rptPages.DataSource = pages;
rptPages.DataBind();
}
else
rptPages.Visible = false;
rptImages.DataSource = pgitems;
rptImages.DataBind();
}
catch { }
}
public int PageNumber()
{
get
{
if (ViewState["PageNumber"] != null)
return Convert.ToInt32(ViewState["PageNumber"]);
else
return 0;
}
set
{
ViewState["PageNumber"] = value;
}
}
public void itemGet()
{
try
{
var Images = dataContext.sp_getCards(categoryId);
PagedDataSource pds = new PagedDataSource();
pds.DataSource = Images;
pds.AllowCustomPaging = true;
pds.AllowPaging = true;
pds.PageSize = 8;
pds.CurrentPageIndex = CurrentPage;
lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of "
+ pds.PageCount.ToString();
// Disable Prev or Next buttons if necessary
//cmdPrev.Enabled = !pds.IsFirstPage;
//cmdNext.Enabled = !pds.IsLastPage;
rptImages.DataSource = pds;
rptImages.DataBind();
}
catch { }
}
protected void rptPages_ItemCommand(object source, RepeaterCommandEventArgs e)
{
try
{
PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
LoadData();
}
catch { }
}
這在GridView中幾乎無法實現,因為它使用剛性表結構,只有單個分頁器模板。 你需要兩個 - 一個在頂部,一個在底部。 對於此類控件,您需要Repeater(.NET 2.0)或ListView(.NET 3.5)。 放置按鈕后,您可以處理其單擊或命令事件,並將網格重新綁定到新選擇的數據集。 在轉發器中,您可能必須在某處(ViewState)存儲當前頁面和每頁的項目數。 如果你想要基於jQuery的分頁(客戶端)和部分渲染你需要處理客戶端onclick並添加AJAX調用以獲得基於按鈕的新頁面。
我使用jQuery插件jquery.tablePagination.0.1.js作為我的解決方案
請參閱此鏈接
正如其他人所說,我不認為這對GridView來說是一個好工作。 我會看看ListView或Repeater,因為它們更適合這樣的東西,很容易添加自定義分頁。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.