我正在寻找gridview(或任何数据绑定控件)的分页(Top,Bottom)功能
我正在使用.net framework 2.0。
我想有指针
谢谢
溶液: 我使用jQuery插件jquery.tablePagination.0.1.js作为我的解决方案
答案 0 :(得分:14)
你可以使用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 { }
}
答案 1 :(得分:1)
这在GridView中几乎无法实现,因为它使用只有单个分页器模板的刚性表结构。你需要两个 - 一个在顶部,一个在底部。对于此类控件,您需要Repeater(.NET 2.0)或ListView(.NET 3.5)。放置按钮后,您可以处理其单击或命令事件,并将网格重新绑定到新选择的数据集。在转发器中,您可能必须在某处(ViewState)存储当前页面和每页的项目数。如果你想要基于jQuery的分页(客户端)和部分渲染你需要处理客户端onclick并添加AJAX调用以获得基于按钮的新页面。
答案 2 :(得分:1)
我使用jQuery插件jquery.tablePagination.0.1.js作为我的解决方案
答案 3 :(得分:0)
正如其他人所说,我不认为这对GridView来说是一个好工作。我会看看ListView或Repeater,因为它们更适合这样的东西,很容易添加自定义分页。