我想通过使用grid.getSelectionModel()选择多行。在extjs 4.1中选择(索引) 谁知道怎么做? 这是我的代码:
var grid = Ext.getCmp('GridStudents');
var fieldvalues = '2054,2055,2057';
var arr = fieldvalues.split(',');
for (var j = 0; j < arr.length; j++)
{
index = grid.store.find('StudentID', arr[j]);
grid.getSelectionModel().select(j);
}
答案 0 :(得分:5)
首先,您的选择模型必须具有模式MULTI
或SIMPLE
。
然后,当您想要选择一个块中的一堆记录时,可以使用方法selectRange(startRow, endRow)
。
您还可以使用select和pass数组记录,或使用索引逐个选择。
此函数都接受另一个参数keepExisting
。设置为true时,保留现有选择(顾名思义)。
您也可以将j
传递给select
方法,而不是index
。
最简单的修复方法是:
for (var j = 0; j < arr.length; j++)
{
var index = grid.store.find('StudentID', arr[j]);
grid.getSelectionModel().select(index, true);
}
如果你的模型配置了多个选择,它应该可以工作。
小提琴:http://jsfiddle.net/7ofLb3Ls/3/
作为替代方案,您可以尝试以下代码:
var grid = sender.up('grid');
var fieldvalues = '2054,2055,2057';
var arr = fieldvalues.split(',');
var records = Ext.Array.filter(
grid.store.data.items,
function(r) {
return arr.indexOf(''+r.get('StudentID')) !== -1;
}
);
grid.getSelectionModel().select(records);