2009-08-24 58 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);