Dojo DataGrid加载所选项目

时间:2009-08-24 21:16:31

标签: datagrid dojo

我有一个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,仍然有空项,只有顶部和底部的行实际上被删除。

有没有办法在网格中加载选定的项目?

1 个答案:

答案 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);