【问题标题】:commit changes on existing records in extjs store提交对 extjs 存储中现有记录的更改
【发布时间】:2014-03-02 04:07:05
【问题描述】:

我的问题是我想更新现有商店并在网格上显示更改。 我正在做的更新是:

var record = store.getById(me.internalParameters.editInfo.id);
//console.log(me.InfoEditorPanel.hardwareIdField.value);
record.set('hardwareid', me.InfoEditorPanel.hardwareIdField.value);
record.set('location', me.InfoEditorPanel.locationField.value);
record.set('isActive', me.InfoEditorPanel.isActiveField.value);
record.commit();
store.load();

这里是我用来构建网格的。

Utils.getPanelListGrid = function (parameters) {
    if (parameters.initParameters == null)
        parameters.initParameters = {};
    var initParameters = parameters.initParameters;
    initParameters.gridColumns = [
        { header: "ID", dataIndex: "id", flex: 1 },
        { header: "Hardware ID", dataIndex: "hardwareid", flex: 1 },
        { header: "Location", dataIndex: "location", flex: 1 },
        { header: "Active", dataIndex: "isActive", flex: 1 }
    ];
    return new Backend.shared.MyDataGrid(parameters);
};

Ext.define(
    "shared.MyDataGrid", {

        extend: "Ext.grid.Panel",
        xtype: "MyDataGrid",
        title: "MyDataGrid - Hardcoded values",
        initParameters: {
            storeIdProperty: null,
        },
        initComponent: function () {
            this.store = Ext.create('Ext.data.Store', {
                storeId: 'myStore',
                proxy: {
                    type: 'memory',
                    reader: {
                        type: 'json',
                        root: 'items'
                    }
                },
                fields: ['id', 'hardwareid', 'location', 'isActive'],
                data: {
                    'items': [{
                        'id': '123456',
                        'hardwareid': "HID-159",
                        'location': "Bedroom",
                        'isActive': "No"
                    }, {
                        'id': '789456',
                        'hardwareid': "HID-357",
                        'location': "Kitchen",
                        'isActive': "Yes"
                    }, {
                        'id': '147852',
                        'hardwareid': "HID-149",
                        'location': "Guest-room",
                        'isActive': "Yes"
                    }
                    ]
                }
            });

            this.columns = this.initParameters.gridColumns;

            this.listeners = {
                selectionchange: {
                    scope: this,
                    fn: function (selectionModel, selectedRecords, eventOptions) {
                        this.selectedIds = [];
                        this.selectedItems = [];

                        if (selectedRecords != null) {
                            for (var i = 0; i < selectedRecords.length; i++) {
                                var item = selectedRecords[i].data;
                                this.selectedIds.push(item[this.initParameters.storeIdProperty]);
                                this.selectedItems.push(item)
                            }
                        }
                        if (this.initParameters.selectionChangeCallback != null)
                            this.initParameters.selectionChangeCallback(this.selectedIds, this.selectedItems);
                    }
                }
            };

            shared.MyDataGrid.superclass.initComponent.call(this);
        },
        getRecordCount: function () {
            return this.getStore().getTotalCount();
        },
        getSelectedIds: function () {
            return this.selectedIds;
        },
        getSelectedItems: function () {
            return this.selectedItems;
        }
    });

谁能解释一下我应该怎么做才能让网格显示更新的行?

【问题讨论】:

    标签: javascript extjs save store record


    【解决方案1】:

    我建议在您的 'selectionchange' 事件中使用以下代码。

    this.getStore().load({
        params:{
            'yourModelIdProperty':'selectedId'
        }
    });
    

    它被称为商店代理。您应该为该代理编写一个函数并加载更新的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多