动态加载数据到网格

时间:2015-02-19 08:56:08

标签: extjs4

我需要帮助。 当我用数据创建新网格时,我有工具栏网格(工具栏中的按钮创建打开窗口) 仅在重新加载页面后才显示新行我看到新行。 谢谢。

这是商店:

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();
            }
        });
    }

1 个答案:

答案 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属性。