gridview中的自定义分页
Posted
技术标签:
【中文标题】gridview中的自定义分页【英文标题】:custom paging in gridview 【发布时间】:2011-04-22 17:58:20 【问题描述】:我正在寻找 gridview(或任何数据绑定控件)的分页(顶部、底部)功能
我正在使用 .net 框架 2.0。
我想要指点
谢谢
解决方案: 我使用 jQuery 插件 jquery.tablePagination.0.1.js 作为我的解决方案
【问题讨论】:
【参考方案1】:你可以 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
【讨论】:
【参考方案2】:这在 GridView 中很难实现,因为它使用只有单个页面模板的刚性表格结构。您需要两个 - 一个在顶部,一个在底部。对于此类控制,您需要 Repeater (.NET 2.0) 或 ListView (.NET 3.5)。放置按钮后,您可以处理它们的单击或命令事件,并将网格重新绑定到新选择的数据集。在转发器中,您可能必须在某处(ViewState)存储当前页面和每页的项目数。如果您想要基于 jQuery 的分页(客户端)部分呈现,您需要处理客户端的 onclick 并添加 AJAX 调用以获取基于推送按钮的新页面。
【讨论】:
嗨 Ladislav,感谢您的回复。如果 gridview 不适合,那么我可以使用任何其他控件。请提供一些适合上述功能的脚本。【参考方案3】:我使用 jQuery 插件 jquery.tablePagination.0.1.js 作为我的解决方案
参考this link
【讨论】:
【参考方案4】:正如其他人所说,我认为这对 GridView 来说不是一件好事。我会看看 ListView 或 Repeater,因为它们更适合这样的事情,并且很容易添加自定义分页。
【讨论】:
以上是关于gridview中的自定义分页的主要内容,如果未能解决你的问题,请参考以下文章