EXTJS3 — проблема сохранения текущего состояния Ext.grid.EditorGridPanel

По одному из вялотекущих проектов доделываю и доделываю разную функциональность. Основной упор сделан на таблицы EXTJS. Причем допиcана и доделана просто масса разнообразных функций, и смена версии EXTJS на четвертую просто не рассматривается, как возможная, в принципе. То есть стоимость смены версии EXTJS  не оставляет другого варианта, как дорабатывать текущую инсталляцию.

Однако некоторые вещи, которые, по слухам, нормально делаются в более новых версиях ExtJS, в старом представлении библиотеки просто не предусмотрены.

Например, одной из последних задач было сохранение внешнего вида таблицы. то есть расположения столбцов, их ширины, порядка. Попробуйте сделать теперь такую функцию, чтобы она нормально функционировала вместе с большинством браузеров и вы меня поймете. Поиск в течение 5-ти дней ничего не дал. Дело в том, что встроенный в ExtJS механизм восстановления состояний (extjs state restoring) не просто не совершенен, он фактически основан на «кукисах», что не является по-моему мнению сколько бы то ни было серьезным подходом.

Вот обычный тип получения данных предыдущего состояния таблицы екст:

 var cp = new Ext.state.CookieProvider({
  "expires" : new Date( new Date().getTime()+(1000*60*60*24*30)  ) 
 });
 Ext.state.Manager.setProvider( cp );

Вот это вот по идее должно сохранять данные 30-ть дней, но все знают как иногда работают «куки», по-моему это вообще вопрос везения, а не подход к сохранению данных. Ведь, даже если все идеально работает, настройки текущей таблицы будут сохраняться для текущего рабочего места, а не для пары логин/пароль. Это не есть хорошо.

Кстати, и «решение», которое предлагается в виде отдельного расширения на форуме sencha.com, также не работает нормально. Точнее работает через раз. Проблема в … точке загрузки. Ведь получение состояния таблицы невозможна после ее генерации. То есть такой код должен следовать вообще первым в вашей странице, что не есть удобно и не оставляет возможности нормально работать в ajax-режиме.

Кстати, я лично решил данную проблему с помощью чисто железного решения, — то есть предварительной генерации JS конкретно для текущего состояния таблицы. То есть все ширины, положения указываются в JS, в виде кода. Достаточно утомительное решение для таблицы из 24-х полей.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *