訣竅是:
- 保存一些指示爲每個選定的行
- 當你建立這行
- 呼叫「setSelectedRows」後「setGridData陣列中的選擇的過濾數據,記「
這是做它的代碼。
// 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();
}
請注意,此代碼不會保留未通過過濾器的選定行。
這被固定一個月前:[修正#498 - 選擇濾波時,不會總是保持](https://github.com/mleibman/SlickGrid/commit/5b13782a50315f60aa911c360ec28d8ac9f63a42)。 – idbehold
不知道。我會考慮在我的項目中升級slickgrid。 –
idbehold,如果您想將該鏈接發佈爲答案,我會將其標記爲正確。如果不是的話,我會自我回答,以便這個問題至少有一個答案。 –