我有一个表单,我需要用字段值填充网格。
此时,组合框值是通过PHP文件中的SQL查询获得的,该文件由JSON Store调用以填充表单。
我使用相同的方式填充网格数据,但仅使用其他商店用于网格。
实际上我是用JSON方法填充网格的。
这是我的JSON商店,它调用网格中填充的一些值。
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',
});
在组合框监听器中我使用此调用来加载网格(因为当我在组合中选择一个值时应该填充网格)
store_grid_CC.load({
params:{ subcenter_id: subcenter_id,
opcion:'grid'}
});
该商店转到distribucion.php并发送从组合框获得的subcenter_id,然后通过SQL返回的PHP文件查询填充在网格的前2列中的center_name和subcenter_name(为4)。
但最后两列应该填写从表格中的文本字段中获得的一些数据。
然后我的问题是我有2路方法来获取此网格的数据,(通过JSON方式和值格式方式)。
我认为一个解决方案是从表单字段获取所有数据,包括组合框值,但不调用SQL并等待JSON响应,否则,从de combo字段获取RawValue(最终值,不使用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“car”“truck”20 100
(仅作为示例)。
我需要将这些数据放入网格存储中,当我按下(添加行)这样的按钮时,这些值应该插入到新行的网格中。
我怎么能这样做呢?其他,我怎么能用从表格中获得的数据填充网格商店?。
我尝试使用SimpleStores,JSONStores,但我不知道如何将表单值存储为以后由网格呈现。我没有成功。
非常感谢!
答案 0 :(得分:1)
第1步:您希望对用于网格列和商店字段的表单字段使用相同的名称。
E.g。表格字段:
items: [{
xtype: 'textfield',
fieldLabel: 'Test string',
name: 'Test1'
},{
xtype: 'checkbox',
fieldLabel: 'Test bool',
name: 'Test2'
},{
xtype: 'numberfield',
fieldLabel: 'Test number',
name: 'Test3'
}]
E.g。模范领域:
Ext.define('MyModel',{
extend: 'Ext.data.Model',
fields:[{
name: 'Test1',
type: 'string'
},{
name: 'Test2',
type: 'bool'
},{
name: 'Test3',
type: 'int'
}]
});
E.g。网格列:
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));