2017-03-20 74 views
2

(我想要做的事:你知道嗎?你Ctrl或Shift如何選擇多行爲什麼不讓它點擊切換,而不需要鍵盤按鍵?)ag-grid row複選框選擇。使複選框的選擇等同於行選擇

我試圖使rowSelected事件或rowClicked事件始終檢查整行左列的複選框。

並添加到它,所以點擊另一行,添加它。點擊另一行,檢查並選擇該行。

點擊一個已經選好的已經檢查過的行......它應該「取消」和「取消選擇」。

所以...行選擇多個+複選框多個,是等價的。

   "rowSelection": "multiple", 
       "onRowSelected": rowSelected, 
       "suppressRowClickSelection": false, 


function rowSelected(event){ 
    console.log("t1 " + event.node.isSelected()); 
    if(event.node.isSelected()){ 
     event.node.setSelected(false); 
    } else { 
     event.node.setSelected(true); 
    } 
} 

Plunker例:

https://embed.plnkr.co/vf0aV6Q0MgA4ZvtzWhFb/

(Plunker例如,你可以不取消行了)

+0

也許' 「onRowSelected」:rowSelected'應該是' 「onRowSelected」:rowClicked' –

+0

我一直都。 rowClicked和rowSelected只是該函數的名稱。我在代碼中有正確的函數名稱。問題是ag-grid試圖循環遍歷所有的NODES而不是選擇的和崩潰的。 rowSelected - >選擇行 - >選擇複選框 - >完成。 rowSelected - >取消選擇行 - >取消選中複選框 - >完成。我無法建立這種邏輯。 – Dexter

回答

4

解決。基本上覆蓋了他們的默認「選擇模型」。

function RowClickEventHandler(event){ 
    if(event.node.isSelected()){ 
     console.log("deselected"); 
     event.node.setSelected(false, false); 
    } else { 
     event.node.setSelected(true); 
     console.log("selected, add"); 
    } 

} 

var gridOptions = { 
    columnDefs: columnDefs, 
    onRowClicked: RowClickEventHandler, 
    suppressRowClickSelection: true, 
    suppressCellSelection: true, 
    rowSelection: 'multiple', 
    rowData: null 
}; 

https://plnkr.co/edit/KHj1lstv9GQncxlX4Gvx?p=preview