我有一个DataGrid,希望用户选择多个项目,然后单击按钮对这些项目执行某些操作(例如删除)。如果只选择了几个项目,则删除有效,但如果用户选择所有项目而不缓慢滚动它们,则某些选定项目为空。
我也尝试过grid.removeSelectedRows(),但这对于未加载的项目也不起作用。
我也尝试先抓取:
grid.store.fetch({count:grid.rowCount,onComplete:dojo.hitch(this,function(){ var items = grid.selection.getSelected(); grid.selection.clear(); if (items.length) { dojo.forEach(items, function(selectedItem) { if (selectedItem !== null) { grid.store.deleteItem(selectedItem); //or do something else } }); } grid.sort(); })});
即使使用fetch,仍然有空项,只有顶部和底部的行实际上被删除。
有没有办法在网格中加载选定的项目?
答案 0 :(得分:1)
我的任务是将选择第一项值“扩展”到选择的其余部分。我遇到了与你类似的问题,但终于找到了解决方案:
updateSelected = function() {
//Callback for processing a returned list of items.
function gotSelected(items, request) {
var selectedIndex = paramGrid.selection.selected;
console.debug(selectedIndex);
var firstItem;
var counter = 0;
for (var i=0;i<selectedIndex.length;i++){
if(selectedIndex[i]){
var item = items[i];
if (counter < 1){
firstItem = item;
counter ++;
}else{
paramStore.setValue(item, "valueSPO", firstItem.valueSPO);
paramStore.setValue(item, "valueSPI", firstItem.valueSPI);
paramStore.setValue(item, "valueSM", firstItem.valueSM);
paramStore.setValue(item, "state", firstItem.state);
}
}
}
}
function fetchFailed(error, request) {
console.log("lookup failed.");
console.log(error);
}
paramStore.fetch({
query: {id: '*'},
onComplete: gotSelected,
onError: fetchFailed,
});
}
在此之后,您必须将此功能连接到addOnLoad中的按钮:
dojo.connect(button2, "onClick", updateSelected);