我使用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,
{
我遗漏了一些简单的东西,但不知道它是什么。 非常感谢任何形式的帮助。
答案 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()
。