【发布时间】:2009-06-15 16:46:27
【问题描述】:
我在 GridView 上进行分页时有一种奇怪的体验。 我正在尝试通过使用带有计时器的更新面板和附加的更新进度来将数据延迟加载到我的 griview 中。 所以基本上我想做的是当带有网格的页面加载时我通过启用它来启动计时器。在 timer_tick 事件中,我正在获取数据并将其加载到变量中。然后在 gridview 上调用 databind 强制它绑定数据。在这里,我使用 LinqDataSource 来做到这一点。最后,我通过更新面板上的 Update 方法更新 UI。
这一切都适用于 gridview 上的排序和过滤,但是当我对其进行分页时,网格页面就像它应该的那样,但分页模板始终停留在第一页上(显示 1 为活动)。任何想法的人?这是我的一些代码:
<asp:LinqDataSource runat="server" ID="OrdersDataSource"
OnSelecting="OrdersDataSource_Selecting" AutoPage="false" />
<asp:GridView runat="server" ID="OrdersGridView" AutoGenerateColumns="false"
DataSourceID="OrdersDataSource"
AllowPaging="true" AllowSorting="true" PageSize="3">
<Columns>
...
<asp:Timer runat="server" ID="LazyLoadUpdatePanel"
Enabled="false"
Interval="1" OnTick="LazyLoadUpdatePanel_Tick" />
...
protected void LazyLoadUpdatePanel_Tick(object sender, EventArgs e)
{
if (datasource == null)
{
System.Threading.Thread.Sleep(2000);
datasource = customer.Orders;
OrdersGridView.DataBind();
OrdersUpdatePanel.Update();
}
LazyLoadUpdatePanel.Enabled = false;
}
顺便说一句,我尝试过对数据源进行自动分页,但没有它。那没有奏效。正如我所说的分页似乎工作,UI 只是没有显示它应该显示的内容。
【问题讨论】:
-
我真的想通了。正是 gridview 上的那个小视图状态吸盘导致了问题。将其设置为 false 使其工作。