2009-08-24 57 views
2

我有一个DataGrid,并希望用户能够选择多个项目,然后点击一个按钮,做这些项目(如删除)的东西。如果只选择几个项目,删除工作,但如果用户选择的所有项目,而不在他们慢慢滚动,一些选定的项目为null。道场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(); 
})}); 

即使有取,仍有空的项目,只有非常顶部和底部行实际上被删除。

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

回答

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