DHTMLX: Фильтрация в колонке типа Subgrid, вложенной в Grid
Для чего я это использую? Для нового приложения от Loco под названием Giorni ("Подарки на праздники"), там у меня есть поле друзей, которое заполняется из другой таблицы в базе, как раз благодаря выпадающей таблице. Также такую фильтрацию повесил и на поле - "подарки", что позволило вынести перечень подарков в отдельную таблицу (для будущего развития этого приложения!).
Привожу кусок кода:
// чтобы работал фильтр по subgrid в первой колонке (именам людей из таблицы people, а не по их id)! grid_lines.attachEvent("onFilterStart",function(){ this.setColTypes("ro,grid,clist,ed,acheck,ed,ed,co"); return true; }) grid_lines.attachEvent("onFilterEnd",function(){ this.setColTypes("grid,grid,clist,ed,acheck,ed,ed,co"); return true; }) // чтобы работала сортировка по subgrid в первой колонке (именам людей из таблицы people, а не по их id)! grid_lines.attachEvent("onBeforeSorting",function(){ this.setColTypes("ro,grid,clist,ed,acheck,ed,ed,co"); return true; }) grid_lines.attachEvent("onAfterSorting",function(){ this.setColTypes("grid,grid,clist,ed,acheck,ed,ed,co"); return true; }) //mygrid.enableSmartRendering(true,50); grid_lines.setSubGrid(subgrid, 0, 0); // первый столбец с grid grid_lines.setSubGrid(subgrid2, 1, 0); //2-й столбец с grid grid_lines.setSubGrid(subgrid3, 5, 0); //6-й столбец с grid - gifts! grid_lines.init();
Идея в обработчиках событий - в событии onFilterStart устанавливается тип первого столбца в "только для чтения" (ro), а потом, после фильтрации, возвращается назад в тип grid.
Тоже самое надо обязательно сделать и для сортировки по этому полю, чтобы не сортировалось по id. Для этого - прифигачим/приаттачим события onBeforeSorting и onAfterSorting.
Список всех Events можно увидеть здесь.
Вызывать их надо до инициализации вашего grid.
P.S. Подробнее о "Giorni" расскажу дальше, желающие смогут приобрести это приложение за небольшую плату для организации собственного контроля подарков (и не только) для друзей, либо посмотреть, что вытворяю с помощью интересной библиотеки DHTMLX.
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 0 DHTMLX: Фильтрация в колонке типа Subgrid, вложенной в Grid (05.08.2013) ← вы тут
- TeamSense: username (логин) в регистрации пользователя. Внедрили библиотеку DHTMLX в TeamSense. (11.01.2013)
- DHTMLX и Yii: как использовать условия в выборке из базы данных. (02.01.2013)
- DHTMLX: Устанавливаем тип поля dhxCalendarA (всплывающий календарь) для полей типа date (datetime) в компоненте dhtmlxGrid (20.12.2012)