如何在extjs 4.1中使用grid.getSelectionModel()。select(Indexes)选择多行

时间:2014-12-02 06:11:26

标签: extjs4.1

我想通过使用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);
}

1 个答案:

答案 0 :(得分:5)

首先,您的选择模型必须具有模式MULTISIMPLE

然后,当您想要选择一个块中的一堆记录时,可以使用方法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);

小提琴:http://jsfiddle.net/7ofLb3Ls/4/