我有一个很大的列表,我已经实现了过滤。我想用户能够选择一些行,过滤列表,选择更多行,更改过滤器,选择更多行,并保留所有选择。
我关注这个例子: http://mleibman.github.com/SlickGrid/examples/example4-model.html
按照以下步骤查看我的问题:
现在看到这个问题了。对我来说,只选择了行2,6,8和29。我宁愿选择0到10和29。有没有选择来获得这种行为?如果没有,有人可以推荐一种可行的方法吗?
答案 0 :(得分:2)
诀窍是:
这是执行此操作的代码。
// filter grid without harming selection
// grid: a SlickGrid Object
// filter: a function that receieves a "data row" and returns true if it meets the filter
function filterGrid(grid,filter) {
var oldline;
var olddata=grid.getData();
var oldselection=grid.getSelectedRows()
var newline=0;
var newdata=[];
var newselection=[];
for (oldline=0; oldline<olddata.length ; oldline++ ) {
if (filter(olddata[oldline]) {
newdata.push(olddata[oldline]);
if (oldselection.indexOf(oldline)>-1) { // note on condition: ECMA5 - in IE8 you will need to loop
newselection.push(newline);
newline++;
}
}
}
grid.setData(newdata);
grid.setSelectedRows(newselection);
grid.updateRowCount();
grid.render();
}
请注意,此代码不会保留未通过过滤器的选定行。
答案 1 :(得分:2)
此问题已在Github上解决。