У меня была та же проблема, поэтому я решил ее обойти, имитируя внешний вид выбора строк.
В вашем объекте columnDefs
добавьте атрибут 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
каждый раз, когда он собирается отобразить ячейку на экране. Эта функция проверяет, находится ли ячейка в той же строке, что и SelectedRowIndex
(в зависимости от того, в какой строке последний раз щелкнул пользователь), чтобы определить, должна ли ячейка отображаться с классом rowSelected
.
function CustomRowStyle(params) {
return params.rowIndex === SelectedRowIndex
}
Наконец, определите класс rowSelected
с выбранной вами строкой CSS:
.rowSelected {
background-color: silver !important;
}
На какой бы строке вы ни щелкнули (будь то элемент группы или дочерний элемент), она появится с rowSelected
CSS. Ваш контроллер всегда может узнать, какая строка выбрана в данный момент, проверив переменную SelectedRowIndex
.
person
Dr. Cool
schedule
22.07.2016