我需要帮助。 当我用数据创建新网格时,我有工具栏网格(工具栏中的按钮创建打开窗口) 仅在重新加载页面后才显示新行我看到新行。 谢谢。
这是商店:
var writer = new Ext.data.JsonWriter({
type: 'json',
encode: false,
listful: true,
writeAllFields: true,
returnJson: true
});
var reader = new Ext.data.JsonReader({
totalProperty: 'total',
successProperty: 'success',
idProperty: 'Id',
root: 'Data',
messageProperty: 'message'
});
var proxy = new Ext.data.HttpProxy({
reader: reader,
writer: writer,
type: 'ajax',
api: {
read: '/Item/Get',
create: '/Cart/CreateCart',
update: '/Cart/CreateCart',
destroy: '/Cart/CreateCart',
add: '/Cart/CreateCart'
},
headers: {
'Content-Type': 'application/json; charset=UTF-8'
}
});
Ext.define('ExtMVC.store.Items', {
extend: 'Ext.data.Store',
model: 'ExtMVC.model.Item',
autoLoad: true,
paramsAsHash: true,
autoSync: true,
proxy: proxy
});
这是创建的方法:
additem: function (button) {
var win = button.up('window'),
form = win.down('form'),
values = form.getValues();
Ext.Ajax.request({
url: 'Item/CreateItem',
params: values,
success: function (response, options) {
var data = Ext.decode(response.responseText);
if (data.success) {
Ext.Msg.alert('Create', data.message);
}
else {
Ext.Msg.alert('Create', 'Creating is faild');
}
win.close();
}
});
}
答案 0 :(得分:0)
在你的函数addItem中,你将数据(记录)添加到你的数据库,你不会将这个记录添加到商店(绑定到网格)。
因为您将数据保存到数据库中,所以在重新加载后会将数据加载到商店(并显示在网格中)。
您可以按如下方式将记录添加到商店:
var win = button.up('window'),
form = win.down('form'),
values = form.getValues();
var store = *referenceToYourGrid*.getStore();
var model = Ext.ModelMgr.getModel(store.model);
var record = model.create();
record.set(values);
store.add(record);
现在它应该显示在你的商店里。您可以使用store.insert(0,record)代替store.add将记录插入特定位置。在这种情况下作为第一条记录(位置:0)。 Store.add将记录放在商店(和网格)的末尾。您可以store.sync()将记录保存到数据库而不是Ajax请求。您已经配置了代理的api属性。