Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Запись состояния грида в базу. (https://javascript.ru/forum/extjs/25303-zapis-sostoyaniya-grida-v-bazu.html)

jura4x01 01.02.2012 10:59

Запись состояния грида в базу.
 
Добрый день. У меня есть вопрос - сталкивался ли кто-нибудь с проблемой записи/чтения состояния грида в базу? Если есть наработки - с радостью приму их к сведению :)

nekto_O 01.02.2012 11:44

О каких именно проблемах идет речь?

jura4x01 01.02.2012 11:56

вот пока наткнулся на это:
http://of.com.ua/extjs/sohranyaem-ko...v-baze-dannyh/
не понятно как это прикрутить и использовать :-?

poorking 01.02.2012 12:05

Так вы маны то почитайте про state про методы getState про setState, как их правильно перегрузить и вообще зачем. И никакой базы не надо, будет писать весь этот хлам в куки (Ext3), Ext4 наверно уже узнал о существовании localStorage, а в IE8 например на куки 10кб дано, а если у вас таблица 15 столбцов и надо запомнить всех их ширину, порядок следования, метод сортировки и все такое, и таблиц поди не 1 а несколько, то кук не хватит и IE8 начинает то виснуть, то вообще удивлять. Мы стали использовать другой механизм, наши setState просто писал в специальный объект для всего приложения, а при unload постил json на вебсервер, соответственно при load страницы этот объект присылался вебом и JSON.parse его на место. А компоненты при иницаиализации, которые stateful = true искали в этом объекте информацию и своем состоянии и если находили то автоматически конфигурировалсиь

jura4x01 01.02.2012 12:15

спасибо за длинный ответ, но нужна БАЗА. ибо подразумевается сохранять настройки грида свои для каждого пользователя. чтобы они независимо от браузера с конкретными куками настраивались. state.stateful отсутствует в ext 3.4 поэтому мне он не подходит.

poorking 01.02.2012 12:26

Ну так свой механизм напишите централизованный. Я бы реализовал как плагин. Плагин вешает на компонент необходимые события (перетаскивание столбцов, изменения их разхмера и тп) при которых пишет в какой то свой статический объект необходимые данные связанные с ID компонента. Также плагин вешает на главное окно приложения на unload обработчик который отправляет в удобном вам виде этот объект на обработчик вебсервера, который в свою очередь пишет это в базу. (Мы заморачиваться на стали и для каждого юзера делали файл username.json в котором лежал json). Также при инициализации вьюпорта с помощью специально обученного статик интерфейса плагина загружайте с веба нужный json и после загрузки продолжайте рендерить остальные компоненты. Еще плагин должен вешать на компоненты onbeforerender, в котором компоненты будут брать из статического объекта состояний нужную инфу и применять куда надо.

Когда вы заведете этот механизм, вы просто забудете о этих состояниях, просто будете записывать в какой то объект что нужно и когда угодно извлекать. Очень удобно. Еще советую перегрузить глобально Ext.Component - напишите метод который возвращает ссылку на кусок глобального объекта плагина, который относится только к текущему компоненту. И вы просто будете делать так

var myState = this.getOwnState();
myState.a = 100500;


И после перезагрузки страницы буде

this.getOwnState().a === 100500


Часовой пояс GMT +3, время: 17:16.