将值从表单存储到网格

时间:2011-04-11 18:35:33

标签: javascript extjs

我在extjs中创建了一个添加记录表单,用于将用户输入的数据存储到网格中。

好吧,如果找到以下方法从formPanel获取表单值

var formPanel = new Ext.form.FormPanel({...});
var form = formPanel.getForm();
var firstName = form.findField('firstname').getValue();

但我想将所有用户输入值转换为JSON,并希望存储到Grid面板中,并希望将其发送到服务器。但是使用findField我必须手动创建数组,然后需要将其编码为JSON,那么是否有任何替代方法可以直接从表单读取值并将其转换为JSON并将其存储到Grid Panel中。

1 个答案:

答案 0 :(得分:1)

当您说“想要存储在GridPanel中”时,您是要更新网格存储中的现有记录还是要插入新的一个或两个? (取决于它的添加或更新可能吗?)

对于这种情况,BasicForm(上面代码段中的var表单)提供了updateRecord( Record record )方法。

所以你的步骤是 -

var record = Record.create(...) // in case of insert

OR

var record = //obtain record from grid.getStore() in case of update

然后,

formPanel.getForm().updateRecord(record); //update the passed record with values from the form

然后将记录提交回商店 -

grid.getStore().add(record); //in case of insert
grid.getStore().commitChanges(); //incase of update

参考 - Ext.form.BasicFormExt.data.Record

定义您的记录类型 -

MyRecordType = Ext.data.Record.create(['id', 'field1', 'field2']);

var myrec = new MyrecordType();

现在将myrec传递给updateRecord,如上所述。