Я немного не уверен, как сделать следующее:
У меня есть панель сетки, и в одном из полей у меня есть автозаполнение, и эта часть моего приложения работает нормально.
Я бы хотел сделать следующее:
После выбора элемента из списка автозаполнения я хотел бы заполнить данные «Описание», связанные с этим элементом, и заполнить их в соответствующей ячейке.
Например, данные, возвращаемые для "PartNum 3":
{"PartNum":"PartNum 3","Description":"Description partnum 3"}
После выбора я бы хотел, чтобы «Description partnum 3» обновлялось в ячейке «Описание» панели сетки.
Теперь, что меня немного смущает, так это лучший способ сделать это. Первый способ - это модель "DOM", как описано здесь Как прочитать и установить значение определенной ячейки в сетке ExtJS? . Похоже, что другой метод - это скорее решение «Store», например Обновление или перезагрузка магазина ExtJs ComboBox
Итак, мой вопрос: какой метод мне использовать и почему? В частности, я хотел бы знать, как лучше всего выполнить операцию добавления в бэкэнде.
Будет приветствоваться также некоторый код для метода «Store» в применении к Gridpanel и автозаполнению.
Что касается текущего кода, вот моя модель:
Ext.define('CustomerOrderLineGrid.model.COLInventoryPart', {
extend: 'Ext.data.Model'
, fields: ['Id', 'PartNum', 'Description']
, proxy: {
type: 'ajax'
, api: {
read: '../InventoryPart/InventoryPartListAutoComplete'
}
// , url: 'someUrl'
, extraParams:
{
total: 50000
}
, reader: {
type: 'json'
, root: 'InventoryParts'
, successProperty: 'success'
, totalProperty: 'total'
}
, simpleSortMode: true
}
}); * 1 028 *
В магазине есть:
Ext.define('CustomerOrderLineGrid.store.COLInventoryParts', {
extend: 'Ext.data.Store',
model: 'CustomerOrderLineGrid.model.COLInventoryPart',
autoLoad: false
, pageSize: 200
, remoteSort: true
, remoteFilter: true
, buffered: true
, sorters: [{
property: 'PartNum'
, direction: 'ASC'
}]
* +1032 *});
и часть вида:
, editor: {
xtype: 'combo'
, store: 'COLInventoryParts'
, displayField: 'PartNum'
, typeAhead: true
, width: 320
, hideTrigger: true
, minChars: 2
, listeners:
{
select: function (f, r, i) {
// CODE TO INSERT TO POPULATE DESCRIPTION FIELD
}
}
}