Заполните сетку значениями, полученными из формы ExtJS

У меня есть форма, и мне нужно заполнить сетку со значениями полей.

В этот момент значения комбинированного списка получают с помощью SQL-запроса в файле PHP, который вызывается JSON Store для заполнения формы.

Таким же образом я использую, чтобы заполнить данные сетки, но с другим хранилищем только для сетки.

На самом деле я заполняю сетку методом JSON.

Это мой JSON Store, который вызывает некоторые значения, заполненные сеткой.

var store_grid_CC = new Ext.data.JsonStore({
//successProperty: 'success',
url: 'json/distribucion.php?opcion=grid',
autoLoad: true,
fields  : ['center_name', 'subcenter_id','subcenter_name', 'porc_distribucion'],
root    : 'grid',
});

и в слушателе combobox я использую этот вызов для загрузки сетки (потому что сетка должна быть заполнена, когда я выбираю значение в комбо)

 store_grid_CC.load({
params:{ subcenter_id: subcenter_id,
opcion:'grid'}
});

В этом хранилище перейдите по адресу distribcion.php и отправьте subcenter_id, полученный из выпадающего списка, а затем PHP-файл вернет SQL-запросом имя_центра и имя_символа, которые заполнены в первых 2 столбцах таблицы (их 4).

Но последние 2 столбца должны быть заполнены некоторыми данными, полученными из текстовых полей в форме.

Тогда моя проблема заключается в том, что у меня есть 2 способа, чтобы получить данные для этой сетки (путем JSON и способом формы значения).

Одним из решений, которое я считаю, является получение всех данных из полей формы, включая значения в выпадающем списке, но не вызов SQL и ожидание ответа JSON, в противном случае получение RawValue из поля de combo (окончательное значение без использования subcenter_id).

Пример: значение поля со списком вызывается с помощью:

form.getForm().findField('combobox').RawValue() that return a name.

и текстовое поле с:

form.getForm().findField('textfield').getValue() that return a number.

GRID:

     column1           column2        column3               column4

row1 comboRawValue comboRawValue texfieldgetValue texfieldgetValue


row2 «машина» «грузовик» 20 100


(это только пример).

Мне нужно поместить эти данные в хранилище сетки, и когда я нажимаю кнопку типа (Добавить строку), эти значения должны быть вставлены в сетку в новой строке.

Как я могу это сделать? Иначе, как я могу заполнить Grid Store данными, полученными из формы?

я пытаюсь с SimpleStores, JSONStores, но я не знаю, как дать значения формы для хранения, которые будут прочитаны сеткой после. Я не был успешным.

Большое спасибо!

-1

Решение

Шаг 1: Вы хотите использовать те же имена для полей формы, которые вы используете для столбцов сетки и полей хранения.

Например. Поля формы:

items: [{
xtype: 'textfield',
fieldLabel: 'Test string',
name: 'Test1'
},{
xtype: 'checkbox',
fieldLabel: 'Test bool',
name: 'Test2'
},{
xtype: 'numberfield',
fieldLabel: 'Test number',
name: 'Test3'
}]

Например. модельные поля:

Ext.define('MyModel',{
extend: 'Ext.data.Model',
fields:[{
name: 'Test1',
type: 'string'
},{
name: 'Test2',
type: 'bool'
},{
name: 'Test3',
type: 'int'
}]
});

Например. Сетка столбцов:

columns:[{
xtype: 'gridcolumn',
text: 'Test string',
dataIndex: 'Test1'
},{
xtype:'checkcolumn',
text: 'Test bool',
dataIndex: 'Test2'
},{
xtype: 'numbercolumn',
text: 'Test number',
dataIndex: 'Test3'
}]

Шаг 2: Привязать запись к форме.

При создании новой записи создайте новый экземпляр модели и привяжите его к форме:

form.setRecord(Ext.create('MyModel'))

При сохранении обновите запись и добавьте ее в хранилище, если это еще не сделано.

form.updateRecord();
if(store.indexOf(form.getRecord()==-1) store.add(form.getRecord());

При редактировании существующей записи свяжите запись с хранилищем, например, пятую запись:

form.setRecord(store.getAt(4));
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector