我正在使用 Telerik RadGrid,我们正在尝试让它与 CustomPaging 一起使用。我觉得我很接近,但它没有更新网络客户端上的数据。
我的 aspx 页面代码如下所示:
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxPanel ID="RadAjaxPanel2" runat="server" LoadingPanelID="RadAjaxLoadingPanel1">
<telerik:RadGrid ID="rgItemCustomFields" runat="server" OnNeedDataSource="rgItemCustomFields_NeedDataSource" AllowPaging="true" AllowCustomPaging="true" VirtualItemCount="1000" >
<PagerStyle Mode="NextPrevAndNumeric" Position="TopAndBottom"></PagerStyle>
</telerik:RadGrid>
</telerik:RadAjaxPanel>
我的代码隐藏看起来像这样:
protected void Page_PreRender(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
rgItemCustomFields.Rebind();
}
}
protected void rgItemCustomFields_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
int currentPage = rgItemCustomFields.CurrentPageIndex;
DataTable data = GetData(currentPage);
rgItemCustomFields.DataSource = data;
}
页面显示在屏幕上,我看到前 10 行数据,我在第 1 页。如果我然后单击不同的页码,网格消失,准备显示新数据,并且 rgItemCustomFields_NeedDataSource 方法叫做。
当我添加断点并查看 rgItemCustomFields_NeedDataSource 方法中的数据时,它看起来正确:我看到 10 行,它们与我在屏幕上显示的不同。
我在 VS 中按继续,网格在浏览器中重新显示,但我回到第 1 页,原始数据又回来了。
以某种方式缓存?(我不明白怎么做,但出了点问题。)我在做傻事吗?
(我知道 VirtualItemCount 是错误的:它现在只是硬编码为 1000,而我试图让其余的东西正常工作。此外,一旦我允许每页有不同数量的行,代码将不得不更改;再次,这是只是在我尝试使事情正常工作时简化了代码。我不认为这些事情是问题的一部分,但如果我是个白痴,请随时纠正我。)