C# Telerik RadGrid绑定到大型数据表
我已经成功地将RadGrid绑定到一个需要长时间查询才能生成的大型数据表。我的问题是,RadGrid只显示一个页面,当用户更改页面时必须发回,我丢失了数据表,必须再次执行这个庞大的查询 我尝试Ajaxify RadGrid,但它仍然调用Page_Load,因此无法保存数据表。它应该这样做吗 我能做些什么不同的事情?谢谢C# Telerik RadGrid绑定到大型数据表,c#,asp.net,telerik-grid,C#,Asp.net,Telerik Grid,我已经成功地将RadGrid绑定到一个需要长时间查询才能生成的大型数据表。我的问题是,RadGrid只显示一个页面,当用户更改页面时必须发回,我丢失了数据表,必须再次执行这个庞大的查询 我尝试Ajaxify RadGrid,但它仍然调用Page_Load,因此无法保存数据表。它应该这样做吗 我能做些什么不同的事情?谢谢 <telerik:RadAjaxManager runat="server"> <AjaxSettings>
<telerik:RadAjaxManager runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="rgReport">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rgReport"
LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
</Scripts>
</telerik:RadScriptManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" IsSticky="False" Style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;" EnableSkinTransparency="true" Transparency="0">
</telerik:RadAjaxLoadingPanel>
<telerik:RadGrid ID="rgReport" runat="server" AllowPaging="True" PageSize="50"
AllowSorting="True" OnNeedDataSource="rgReport_NeedsDataSource" OnItemCommand="rgReport_ItemCommand"
AutoGenerateColumns="False" ShowStatusBar="True" CellSpacing="0"
GridLines="None">
<ClientSettings>
<ClientEvents OnRowMouseOver="CBGridRowMouseOver" OnRowMouseOut="CBGridRowMouseOut" />
</ClientSettings>
<MasterTableView Width="100%" DataKeyNames="submissionID" Name="Master">
<CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings>
<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"
Visible="True">
</RowIndicatorColumn>
<ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"
Visible="True">
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn SortExpression="customerID" HeaderText="customerID" HeaderButtonType="None"
DataField="customerID">
</telerik:GridBoundColumn>
将该数据表存储在服务器端,当然,如果您这样做,您应该管理该缓存,例如,如果数据发生更改,请清除该缓存 现在,您的代码应该如下所示:
string cacheID = "myCacheID";
DataTable data = null;
if (HttpContext.Current.Cache[cacheID] == null)
{
data = GetThatHugeDataTable();
HttpContext.Current.Cache.Insert(cacheID, data);
}
else
{
data = (DataTable)HttpContext.Current.Cache[cacheID];
}
当数据更改时,请清除缓存:
HttpContext.Current.Cache.Remove(cacheID);
请注意,这将消耗web服务器上的大量内存,当然这取决于数据表的大小