如何在 c# 中保持 Jqgrid 的状态

本文关键字:Jqgrid 状态 | 更新日期: 2024-10-31 17:13:13

我在MainPage.aspx中有i jqgrid,我从JSON页面(page JsonSource.aspx)获取数据。此 JSON 页从数据表中获取数据。我想在页面 A 中获取此数据表(我不想再次从数据库中获取数据)。

这是主页.aspx:

jQuery("#jQGridDemo").jqGrid({
    url: 'http:///JsonSource.aspx',
    datatype: "json",

在 JsonSource.aspx:

protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = InitDataSource();
        string json = ConvertDataTabletoString(dt);
        ////context.Response.Write(json);
        Response.Clear();
        Response.ContentType = "application/json; charset=utf-8";
        Response.Write(json);
        Response.End();
    }

如果这是不可能的,你能给我另一个解决方案吗?我的数据很大,我只想得到它 1

如何在 c# 中保持 Jqgrid 的状态

您可以在此处至少使用3种方法。缓存,会话甚至cookie(不可行)。

缓存将是最好的选择,因为数据没有绑定到特定用户或给定的会话。

正如@Zaki评论中提到的,您可以在 x 分钟后使缓存失效,然后在必要时重新加载。

简单的缓存处理:

public static readonly ObjectCache cache = MemoryCache.Default; // this would be an instance variable
public void AddToCache<T>(string key, T item)
    {
        cache.Add(key, item, DateTime.Now.AddMinutes(CACHE_TIMEOUT));
    }
public T GetFromCache<T>(string key) where T : class
    {
        try
        {
            return (T)cache[key];
        }
        catch
        {
            return null;
        }
    }

简单的会话处理:

 Session["MyData"] = json; // set data to session variable MyData
string jsonData = Session["MyData"]; // get the data.

但是,您应该进行一些检查以使其更加强大。