我在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中。
答案 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.BasicForm,Ext.data.Record
定义您的记录类型 -
MyRecordType = Ext.data.Record.create(['id', 'field1', 'field2']);
var myrec = new MyrecordType();
现在将myrec传递给updateRecord,如上所述。