Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > ExtJS Grid + контрольная сумма данных в ячейке


Автор: TTT 23.6.2010, 13:08
Всем привет.
Пишу тул для работы с БД. ExtJS Grid + Perl. С таблицей могут работать несколько юзеров. Соответственно есть вероятность "одновременного" изменения ячеек (читай полей таблицы в БД). Блокировки не подходят. Решил передавать контр. суммы к каждой ячейке. Объем данных возрастает, но другого решения пока нет.
Сейчас думаю в Grid добавить скрытое поле "fieldname_md5". Не уверен, что это правильный путь. Народ, поделитесь мыслями, как бы вы сделали? Или может есть такая возможность в самой ExtJS?

Автор: comtat 25.6.2010, 08:30
Как я понял ты используешь для редактирования Ext.grid.EditorGridPanel 
По этому есть предложение использовать Ext.grid.GridPanel + Ext.form.FormPanel
Плюс будет в том что при попытке изменить данные записи информацию ты можешь заново запросить из БД те она будет актуальна.
А для отображения актуальной информации в Ext.grid.GridPanel можно периодически обновлять информацию

Автор: TTT 25.6.2010, 13:09
Это не поможет, потому что данные в момент чтения перед изменением могут быть уже изменены другим юзером. Для правильной проверки на изменение нужно знать считанное значение "А" и новое значение "В". В момент апдейта ячейки нужно заново считать значение "А+", сравнить с "А", и если они равны то писать в ячейку "В". Если не равны, выдать сообщение "Некоторые данные сохранить не удалось. Нажмите ОБНОВИТЬ и попробуйте снова".  Т.е. приходится передавать в ExtJS контр. сумму "А" (исп MD5) и сами данные.

Автор: comtat 25.6.2010, 13:16
Цитата(TTT @  25.6.2010,  13:09 Найти цитируемый пост)
Это не поможет, потому что данные в момент чтения перед изменением могут быть уже изменены другим юзером.

Перед открытием формы редактирования нужно просто запросить данные редактируемой записи из БД

Автор: TTT 25.6.2010, 15:04
Идея хорошая. Нужно подумать над ней. Но все равно эта идея не исключает коллизии. Если юзер будет долго думать над формой, данные могут измениться. В моем случае я вынужден ожидать такую ситуацию.

Автор: comtat 25.6.2010, 16:24
Хранишь для каждой записи значение Даты последнего изменения если при отправке на сохранении даты которая была получена при создании формы не совпадает с датой которая в момент сохранения  находится выводишь пользователю сообщение о том что данные были изменены

Автор: TTT 25.6.2010, 16:35
Спасибо за идею. На выходных попробую переварить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)