ag-grid で「グループ化」行を選択する方法があるかどうか疑問に思っています。
たとえば、Web サイトに示されている例: http://www.ag-grid.com/angular-grid-grouping/index.php
「rowSelection」パラメーターを「single」に設定して、最下位ノードの行全体を強調表示できます。ただし、「国」行を強調表示することはできません。
この例では、これを行う唯一の方法は、その行の下の要素を「すべて選択」することです。
ありがとう!
ag-grid で「グループ化」行を選択する方法があるかどうか疑問に思っています。
たとえば、Web サイトに示されている例: http://www.ag-grid.com/angular-grid-grouping/index.php
「rowSelection」パラメーターを「single」に設定して、最下位ノードの行全体を強調表示できます。ただし、「国」行を強調表示することはできません。
この例では、これを行う唯一の方法は、その行の下の要素を「すべて選択」することです。
ありがとう!
ドキュメントによると、 grid オプションgroupSelectsChildrenをに設定falseすると、グループ化行がその子から独立して選択可能になります。
groupSelectsChildren: true の場合、グループを選択すると、そのすべての子を選択するという影響があります。グループは、すべての子が選択されている場合は「選択済み」、何も選択されていない場合は「未選択」、子に選択済みと未選択が混在している場合は「中間」と表示されます。ノードが子を選択している場合、api.getSelectedNodes() を呼び出すと、選択されたセットには表示されません。falseの場合、グループは子ノードとは無関係に選択可能です。子とは別にグループ ノードを選択すると、api.getSelectedNodes() の呼び出し時にセットに表示されます。
私は同じ問題を抱えていたので、行を選択するルックアンドフィールをエミュレートすることで回避しました。
columnDefsオブジェクトで、属性を EVERY 列定義に追加しますcellClassRules(すべてのセルが強調表示され、クリックすると行自体が強調表示されているように見えます)。
var columnDefs = [
{ headerName: "#1", cellClassRules: { rowSelected: CustomRowStyle }, field: "Col1" },
{ headerName: "#2", cellClassRules: { rowSelected: CustomRowStyle }, field: "Col2" },
{ headerName: "#3", cellClassRules: { rowSelected: CustomRowStyle }, field: "Col3" }
]
次に、オブジェクトにイベント リスナーを追加onCellClickedします。gridOptions
onCellClicked: function(cell) {
SelectedRowIndex = cell.rowIndex;
$scope.gridOptions.api.refreshView();
}
コントローラーで、次の変数を定義しますSelectedRowIndex。
var SelectedRowIndex; // this will contain the currently selected row number
次に、セルを画面上にレンダリングしようとするたびにCustomRowStyle呼び出される関数を作成します。この関数は、セルが(ユーザーが最後にクリックした行に基づいて)ag-gridと同じ行にあるかどうかをチェックして、セルがクラスと共に表示されるかどうかを判断します。SelectedRowIndexrowSelected
function CustomRowStyle(params) {
return params.rowIndex === SelectedRowIndex
}
最後に、rowSelected選択した行 CSS でクラスを定義します。
.rowSelected {
background-color: silver !important;
}
どの行をクリックしても (それがグループ アイテムであるか子アイテムであるかに関係なく)、rowSelectedCSS と共に表示されます。コントローラーは、SelectedRowIndex変数をチェックすることで、現在どの行が選択されているかを常に知ることができます。