ExtJs модель выбора флажка

Я использую GridPanel с CheckboxSelectionModel для выбора элементов. В режиме редактирования, где некоторые параметры уже выбраны, я пытаюсь предварительно выбрать строки при загрузке формы.

...
store.load();
//curSelections is an array containing the some ForeingKey IDs of the selected records.
...

for (var i = 0; i < curSelections.length; i++) {
    console.log('found personel ' + curSelections[i] + ' at ', 
                 store.findExact('Id', curSelections[i]));
    selectedRecords.push(store.findExact('Id', curSelections[i]));
}
//everything is fine according to console log.
checkGrid.getSelectionModel().selectRecords(selectedRecords, true);
formWin.show();

это не работает.

Я пытаюсь вызвать "selectRecords" также на некоторых других событиях страницы/формы, но ни одно из них даже не срабатывает.

grid.addListener('show',
grid.on('show',
formWin.on('activate',
formWin.on('show',....

некоторый код сетки

var sm = new Ext.grid.CheckboxSelectionModel({
        singleSelect: false,
        sortable: false,
        checkOnly: true
    });
    checkGrid = new Ext.grid.GridPanel({
        xtype: 'grid',
        store: obPersonelStore,
        loadMask: true,
        layout: 'fit',
        height: 120,
        id: 'grdIsBirimiPersonelListesi',

        columns: [
            sm,
            {

Мне не хватает чего-то простого, но я не знаю, что это такое. Любая помощь приветствуется.


person hazimdikenli    schedule 02.10.2009    source источник


Ответы (3)


Store.findExact возвращает числовой индекс. SelectionModel.selectRecords ожидает массив объектов Record. Пробовали ли вы selectRows вместо этого? Либо так, либо используйте store.getAt для извлечения записей по индексу для передачи в selectRecords().

person Brian Moeskau    schedule 02.10.2009
comment
хорошо, по какой-то причине я думал, что selectRecords ожидал индексы строк. Теперь самое интересное, это работает, они выбираются, но когда панель загрузки (вращающееся изображение) исчезает, выбор очищается. - person hazimdikenli; 03.10.2009
comment
Вы можете попробовать переместить логику выбора в обработчик события store.load, чтобы сначала убедиться, что загрузка магазина завершена, например, store.on('load', function() { // логика выбора }); - person Brian Moeskau; 03.10.2009
comment
Большое тебе спасибо. Это решило проблему. :) Вы были очень полезны, еще раз спасибо. - person hazimdikenli; 05.10.2009

пытаться:

var store = new Ext.data.Store({
  ...
});
var grid = new Ext.grid.GridPanel({
  store: store,
  ...
});
store.on('load', function() {
  grid.getSelectionModel().selectFirstRow();
});
store.load();
person Zeratul    schedule 14.01.2011

Я не уверен на 100%, чего вы хотите достичь. Вы сказали:

Я нахожу выбранные строки всего списка

Вы имеете в виду, что хотите выбрать каждую строку? В этом случае вы можете использовать метод selectAll() модели CheckboxSelectionModel.

Если вы хотите выбрать только некоторые строки, мне нужно будет увидеть код, который вы используете для получения этих строк в первую очередь, но может случиться так, что вы захотите использовать selectRecords(), а не selectRows().

person Colin Ramsay    schedule 02.10.2009
comment
это была опечатка, я добавил больше кода в исходный пост. Я не добавляю весь код, потому что это не имеет особого смысла. - person hazimdikenli; 02.10.2009