Как сохранить vewstate из Jqgrid в c #

0

У меня есть jqgrid в MainPage.aspx, и я получаю данные со страницы JSON (страница JsonSource.aspx). Эта страница JSON получает данные из DataTable. И я хочу получить этот DataTable на странице A (я не хочу снова получать данные из базы данных).

Это MainPage.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

  • 2
    Вы можете использовать сессию, кеш или даже куки. Я бы, вероятно, использовал кеш, если данные не привязаны к конкретному пользователю.
  • 0
    если ваши данные не меняются между двумя страницами, используйте кеш и установите срок действия. если он истекает, проверьте базу данных и снова загрузите кеш.
Показать ещё 5 комментариев
Теги:
jqgrid

1 ответ

0

Здесь вы можете использовать по крайней мере 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.

Однако вы должны сделать некоторые проверки, чтобы сделать это еще более надежным.

  • 0
    в моем окружении я не могу использовать сессию :(
  • 0
    Затем вы должны проверить два других варианта, или тот, который @Oleg указал в комментарии выше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню