ExtJS Grid在.insert()上添加两行;

时间:2011-01-30 09:54:01

标签: javascript extjs

我正在使用ExtJS编辑器网格,在某些情况下,当我尝试在行中插入一行时 数据存储网格似乎用新行的副本写下一行。

这是使用ExtJS版本3.2.1

{
        xtype: 'button',
        text: 'Clone',
        handler: function (btn)
        {
            var data, wizard, store, record, grid =          btn.findParentByType('editorgrid');
            store = grid.getStore();
            if (grid.getSelectionModel().hasSelection())
            {
                data = grid.getSelectionModel().getSelected().data;
                data.iid = -1;
                record = new store.recordType(data);
                Ext.data.Record.id(record);
                store.insert(0,[record]);
                grid.getSelectionModel().selectRecords([record], false);
            }
        }

}

3 个答案:

答案 0 :(得分:0)

此处显示的覆盖情况可能是由克隆操作中存在的双重ID引起的。因为您的新克隆记录似乎没有唯一ID。

Ext.data.Record.id(record); // return generated unique string id that you never use
record.id = Ext.data.Record.id(record); // here is the different

试试这个

{
        xtype: 'button',
        text: 'Clone',
        handler: function (btn)
        {
            var data, wizard, store, record, grid =          btn.findParentByType('editorgrid');
            store = grid.getStore();
            if (grid.getSelectionModel().hasSelection())
            {
                data = grid.getSelectionModel().getSelected().data;
                data.iid = -1;
                record = new store.recordType(data);
                record.id = Ext.data.Record.id(record); // here is the different
                store.insert(0,[record]);
                grid.getSelectionModel().selectRecords([record], false);
            }
        }

}

答案 1 :(得分:0)

这一行

data = grid.getSelectionModel().getSelected().data;

是问题的一部分,两个记录都指向相同的原始数据,我将其更改为复制数据。

答案 2 :(得分:0)

非常感谢,这有助于获得更好的想法来解决复制问题 我们可以用这种方式复制多行  而且非常简单。

var selectedRows = selectedModel.getSelection();
for ( var i = 0; i < selectedRows.length; i++) {
 var data = selectedRows[i].data; 
 data.iid=-1;
 store.insert(0,[data]);
}

因此我们已经检查了一个插入网格顶部的记录。