2009-08-24 10 views
2

私はDataGridを使用しており、複数のアイテムを選択してボタンをクリックして、それらのアイテム(削除など)で何かを実行する必要があります。少数のアイテムしか選択されていない場合、削除は機能しますが、ユーザーがスクロールせずにすべてのアイテムを選択すると、選択されたアイテムの一部がnullになります。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(); 
})}); 

でもフェッチして、そこにnullの項目が残っている、と非常に上部と下部の行は、実際に削除されます。

選択したアイテムをグリッドに読み込む方法はありますか?

答えて

1

私の仕事は、選択項目の最初の項目値を残りの項目に「拡張」することでした。私はあなたと同様の問題に直面したが、最終的には解決策見つけた:

dojo.connect(button2, "onClick", updateSelected); 
:あなたはaddOnLoadのボタンにこの機能を接続する必要があり、この後

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

}

関連する問題