Редактир-я в modExt:как получить данные др таблиц?
Есть таблица А, таблица Б в компоненте.
Одно из полей таблицы Б компонента содержит id документа modResource. В getlist.class.php (компонент не на гитхабе, modExtra для наглядности) таблицы А я джоиню таблицу Б, в которой собственно id документа и джоиню modResource в prepareQueryBeforeCount, а в гирде вывожу pagetitle в одной из колонок и вместо Б.id, который собственно хранится в А,- Б.name и все хорошо.
Но в функции update в row лежат только данные строки таблицы, которую мы редактируем (т.е. А), данных, полученных в getlist.class.php там нету. Но мне нужно
1) как-то вывесить в окне редактирования pagetitle документа, указанного в строке, указанной в Б (с помощью {xtype:'displayfield'… или {html: '...)
2) скормить комбобоксу id modResource из той строки Б, Б.id который лежит в А сейчас, чтобы он мог предложить из Б строки, которые содержат такой же modResource.id
В принципе я разведал, что нужные мне данные лежат в this.store.getAt(rowIndex).data.resource_id, где rowIndex — индекс редактируемой строки. И весь вопрос сейчас как получить его в функции getMenu, примерно тоже, что в listeners: { rowDblClick: function(grid, rowIndex, e)… означает rowIndex
Ну и еще вопрос: можно ли как-то отсортировавть документе в гирде по-умолчанию?
Если в процессоре поменять public $defaultSortField = 'id'; public $defaultSortDirection = 'DESC';, то в ext.js не работает sortable: true
Одно из полей таблицы Б компонента содержит id документа modResource. В getlist.class.php (компонент не на гитхабе, modExtra для наглядности) таблицы А я джоиню таблицу Б, в которой собственно id документа и джоиню modResource в prepareQueryBeforeCount, а в гирде вывожу pagetitle в одной из колонок и вместо Б.id, который собственно хранится в А,- Б.name и все хорошо.
Но в функции update в row лежат только данные строки таблицы, которую мы редактируем (т.е. А), данных, полученных в getlist.class.php там нету. Но мне нужно
1) как-то вывесить в окне редактирования pagetitle документа, указанного в строке, указанной в Б (с помощью {xtype:'displayfield'… или {html: '...)
2) скормить комбобоксу id modResource из той строки Б, Б.id который лежит в А сейчас, чтобы он мог предложить из Б строки, которые содержат такой же modResource.id
В принципе я разведал, что нужные мне данные лежат в this.store.getAt(rowIndex).data.resource_id, где rowIndex — индекс редактируемой строки. И весь вопрос сейчас как получить его в функции getMenu, примерно тоже, что в listeners: { rowDblClick: function(grid, rowIndex, e)… означает rowIndex
Ну и еще вопрос: можно ли как-то отсортировавть документе в гирде по-умолчанию?
Если в процессоре поменять public $defaultSortField = 'id'; public $defaultSortDirection = 'DESC';, то в ext.js не работает sortable: true
Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2) Вы можете сделать свой виджет селекта с получением данных ajax-ом, запрос отправлять либо на специально созданный процессор, либо на getlist.class.php, который настроен на обработку входящих параметров.
3) Про сортировку: github.com/bezumkin/modExtra/blob/master/assets/components/modextra/js/mgr/widgets/items.grid.js
В baseParams Вы можете указать какую сортировку использовать (например, отправить sort: 'id', sortdir:'ASC'. Вам нужно будет также получить эти параметры в getlist.class.php с помощью $this->getProperty('sort') (вроде бы так, не помню точно)
Т.к. при сортировке в post уходят sort и dir, а не sortdir и почему-то с датами (в столбце for) данный метод не проходит, отлавливаю так в getlist.class.php так:
Джойнить в get ничего не нужно, ибо всегда выбирается только один ресурс.
Единственно, насколько принято писать так Может лучше выше где-нибудь this.resource_id = config.record.object.resource_id, и уже
?