Asp .Net Gridview分页
问题描述:
尝试分页。Asp .Net Gridview分页
<PagerStyle HorizontalAlign="Right" CssClass="paging"/>
<PagerTemplate>
<table width="100%">
<tr>
<td style="text-align:left; width:50%">
<asp:LinkButton ID="lnkPrv" Visible="false" CommandName="Page" CommandArgument="Prev" runat="server">Previous</asp:LinkButton>
</td>
<td style="text-align:right; width:50%;padding-left:50%;">
<asp:LinkButton ID="lnkNext" CommandName="Page" CommandArgument="Next" runat="server">Next</asp:LinkButton>
</td>
</tr>
</table>
</PagerTemplate>
代码背后低于
protected void gvProduct_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
Literal1.Visible = gvProduct.PageIndex == 0;
LinkButton lnkPrv = (LinkButton)gvProduct.BottomPagerRow.FindControl("lnkPrv");
LinkButton lnkNext = (LinkButton)gvProduct.BottomPagerRow.FindControl("lnkNext");
lnkPrv.Visible = e.NewPageIndex > 0;
lnkNext.Visible = e.NewPageIndex < gvProduct.PageCount - 1;
gvProduct.PageIndex = e.NewPageIndex;
FillGrid();
}
的代码不给任何错误。我可以看到它将可见属性设置为true/false。 但页面上的实际控制保持不变(每个页面始终可见)。 '
出了什么问题?
答
如果您的FillGrid()方法重新绑定gvProduct(即gvProduct.DataBind()),那么lnkPrv和lnkNext Visible值将在数据绑定时使用标记中的默认值。您需要在gvProduct的RowDataBound事件的事件处理函数中设置这些控件的可见性。
protected void gvProduct_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
Literal1.Visible = gvProduct.PageIndex == 0;
gvProduct.PageIndex = e.NewPageIndex;
FillGrid();
}
protected void gvProduct_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Pager) {
LinkButton lnkPrv = (LinkButton)e.Row.FindControl("lnkPrv");
LinkButton lnkNext = (LinkButton)e.Row.FindControl("lnkNext");
lnkPrv.Visible = gvProduct.PageIndex > 0;
lnkNext.Visible = gvProduct.PageIndex < gvProduct.PageCount - 1;
}
}
您可以发布您的FillGrid方法的代码? – PhilPursglove 2011-02-23 18:04:21
做任何答案都有帮助吗?如果是这样,你能回答这个问题吗? – Brady 2011-02-24 14:49:21