ExtJs checkboxselectionmodel

时间:2009-10-02 08:51:07

标签: extjs

我使用GridPanel w / 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,
            {

我遗漏了一些简单的东西,但不知道它是什么。 非常感谢任何形式的帮助。

3 个答案:

答案 0 :(得分:3)

Store.findExact会返回数字索引。 SelectionModel。selectRecords需要一个记录对象的数组。您是否尝试过selectRows?或者使用store。getAt通过索引检索记录以传递给selectRecords()。

答案 1 :(得分:1)

尝试:

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

答案 2 :(得分:0)

我不是100%肯定你想要达到的目标。你说:

  

我找到整个列表的选定行

你的意思是你想选择每一行吗?在这种情况下,您可以使用CheckboxSelectionModel的selectAll()方法。

如果您只想选择某些行,那么我首先需要查看您用于获取这些行的代码,但可能是您要使用selectRecords()而不是selectRows()