我正在使用EXTJS 4.0.7 gpl。我正在使用表单/ form-grid.js下的示例。我想在编辑表单中显示的条目后重新加载示例中的网格。
我使用PHP Web服务将数据加载到表单网格中。我有一个处理程序设置来处理表单条目,进行编辑,并更新网格中的值。它工作正常并更新数据库。成功之后,我然后调用商店的重新加载,并使用下面的函数调用看到重新加载的JSON(在FireBug中),但是数据没有加载到网格中。如何获取从商店负载返回的数据以填充到网格并更新。
我想最终使用MVC,但是现在我希望能够在form.submit成功的表单网格中重新加载网格。
我的商店里有一个'tdStore'''storeId',我使用以下方式重新加载商店:
{
xtype: 'button',
text: 'Save',
style: 'margin: 0 5px 0 5px',
handler: function (button) {
// when this button is clicked, sumbit this form
var form = this.up('form').getForm();
var rating = form.findField("rating").getValue();
var formTargetId = form.findField("ID").getValue();
var formFamilyName = form.findField("FAMILYNAME").getValue();
var formTargetName = form.findField("TARGETNAME").getValue();
var formTableName = form.findField("TABLENAME").getValue();
// convert the int value back to a string
var stringVal = "";
if (rating === true) {
stringVal = 'Yes';
} else if (rating === false) {
stringVal = 'No';
}
form.submit({
waitMsg: 'Saving...', // Wait Message
method: 'POST',
params: { 'targetValue' : stringVal , 'targetId' : formTargetId , 'tableName' : targetName },
url: 'app/model/target/GG/add-update_svc.php',
success: function (form, action) { // When saving data success
Ext.Msg.alert('Success', action.result.message);
// clear the form
form.reset();
// reload store
Ext.data.StoreManager.lookup('tvdStore').load(
{
params: {
tableName: formTableName,
targetName: targetName,
familyName: formFamilyName
}
}
);
},
failure: function (form, action) { // when saving data failed
Ext.MessageBox.alert ('Message','Saving data failed');
}
});
}
}
我看到JSON在FireBug中回来应该加载到网格中,所以商店正在重新加载,但我看不到loadMask,网格本身永远不会更新。
答案 0 :(得分:1)
实际上,在任何更新/删除/插入程序之后,您绝对没有也不应该重新加载整个商店。 Store类具有一个逻辑,它在从服务器接收结果消息后更新记录的本地副本。因此,您可能希望确保服务器返回正确的消息并更新本地副本。
网格也应该自动重绘更新的记录。