ExtJS Grid добавляет две строки в .insert (); - PullRequest
1 голос
/ 30 января 2011

Я использую сетку редактора 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 голосов
/ 31 января 2011

Эта строка

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

Была часть проблемы, обе записи указывали на одни и те же необработанные данные, я изменил их, чтобы сделать копию данных.

0 голосов
/ 07 ноября 2013

Большое спасибо, это помогло получить лучшие идеи, чтобы решить скопировать строку и мы можем сделать несколько строк скопировать таким образом и очень просто.

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

Итак, запись вставлена ​​сверху сетки, как мы уже проверяли.

0 голосов
/ 31 января 2011

Ситуация перезаписи, представленная здесь, может быть вызвана наличием двойного идентификатора в вашей операции клонирования. Потому что у вашей новой клонированной записи, похоже, нет уникального идентификатора.

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...