gpt4 book ai didi

c# - ASP.Net : DataPager Control always a step behind with paging

转载 作者:IT王子 更新时间:2023-10-29 04:21:38 25 4
gpt4 key购买 nike

以下面的例子为例……一个页面有一个ListView和一个DataPager用于分页ListView的数据:

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
MyList.DataSource = GetSomeList();
MyList.DataBind();
}

来源:

<asp:ListView ID="MyList" runat="server">
<% //LayoutTemplate and ItemTemplate removed for the example %>
</asp:ListView>

<asp:DataPager ID="ListPager" PagedControlID="MyList" runat="server" PageSize="10">
<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>

DataPager 的问题在于它总是落后于绑定(bind)。

例如,当页面加载时它位于第 1 页。然后当您单击第 3 页时,它在回发后停留在第 1 页。然后您单击第 5 页,在回发后它会发现自己位于第 3 页...之后您单击第 6 页,它会发现自己位于第 5 页...依此类推。

为什么分页没有按预期工作?

最佳答案

解决方案

问题是由于绑定(bind)发生在 Page_Load 事件上。

为了按预期工作,绑定(bind)需要在 DataPagerOnPreRender 事件 中发生,而不是在 Page_Load.

来源:

<asp:DataPager ID="ListPager" PagedControlID="MyList" runat="server" PageSize="10"
OnPreRender="ListPager_PreRender">

<Fields>
<asp:NumericPagerField />
</Fields>
</asp:DataPager>

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
//Binding code moved from Page_Load
//to the ListView's PreRender event
}

protected void ListPager_PreRender(object sender, EventArgs e)
{
MyList.DataSource = GetSomeList();
MyList.DataBind();
}

关于c# - ASP.Net : DataPager Control always a step behind with paging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com