用从表格中获得的值填充网格? EXTJS

时间:2017-08-24 21:20:38

标签: php extjs grid

我有一个表单,我需要用字段值填充网格。

此时,组合框值是通过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,但我不知道如何将表单值存储为以后由网格呈现。我没有成功。

非常感谢!

1 个答案:

答案 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));