Как стать автором
Обновить

как добыть данные из EditorGridPanel

Время на прочтение2 мин
Количество просмотров1.3K
На одном из проектов решено было использовать ExtJS для вывода и редактирования табличных данных. Т.е., нам понадобился грид.
Подключение и наполнение его данными особых проблем не вызывает. В интернете полно инструкций с примерами.
Проблемы начались при попытке получить данные в скрипте php. При сабмите передавались данные только от последних измененных ячеек в колонке. Если в колонке изменялись 2 и более ячейки, то приходила последняя, потому что имена у них были одинаковые.
Таким образом возник вопрос, как назначить ячейкам индивидуальные ID?
Правильный ответ – никак.

Хе хе, на поиск этого ответа я убил часа 4 времени.
Дело в том, что грид принципиально не хранит данные в том виде, в котором их может понять и передать наша html-форма. Поэтому, кстати, нет смысла наш грид в нее вставлять. Те значения, которые приходят в скрипт через POST, всего лишь наследие input-ов, в которых редактировался контент.
Для того, чтобы получить данные, нам придется самим озаботиться их сбором и распихиванием по форме, например в hidden input.
Делается это просто.
Первым делом в конструкторе грида добавим эвент «afteredit», который будет вызывать нашу функцию каждый раз, когда содержимое ячейки будет изменено.

grid.on('afteredit', dataCollector);

Здесь grid это наш объект Ext.grid.EditorGridPanel, а dataCollector это название функции, которая будет вызвана.
А вот и ее код:

function dataCollector(oGridEvent)
{
col = oGridEvent.field; // колонка, в которой находится наше поле
CellValue = oGridEvent.value; // узнали введенное значение
row = oGridEvent.row + 1; // строка, в которой находится наше поле

//а тут уже наш код, который будет ныкать данные

...

}


Ну вот как-то так. Сначала запостил к себе, но потом подумал, что это может быть полезно хабралюдям. Информации на русском об этом «великом и могучем» фреймворке довольно мало.

UPD.: Написал статью с примерами по работе с Ext.grid.EditorGridPanel. Сохранение данных делается не столь варварским способом :)
Теги:
Хабы:
Всего голосов 2: ↑2 и ↓0+2
Комментарии10

Публикации

Истории

Ближайшие события

Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург