这看起来像一个简单的任务,但我已经花了4个小时来找到解决方案。如何通过单击单击突出显示整行?
在寄存器api上我有下一个
$scope.gridOptions.onRegisterApi = function(gridApi){
$scope.gridApi = gridApi;
gridApi.cellNav.on.navigate($scope,function(selected){
if('.ui-grid-cell-focus '){
console.log("fired class")
$(selected.row.entity).addClass('ui-grid-cell-focus')
}
console.log("fired cell")
$(selected.row.entity).addClass('ui-grid-cell-focus')
});
};
我看到单击单元格是如何触发的,但是我不能强制为行着色而我不想选择行,因为我使用复选框选择用于此目的,我只想突出显示该行通过单击此行中的任何单元格。有人能告诉我我的错误在哪里吗?
附加plunker
答案 0 :(得分:2)
实现所需目标的一种方法是将columnClass定义添加到columnDefs。该函数需要两个参数:grid和row。
$scope.gridOptions.columnDefs = [{
name: 'id',
width: '150',
cellTemplate: "",
cellClass: getCellClass
}, {
name: 'name',
width: '200',
cellClass: getCellClass
} ...
];
function getCellClass(grid, row) {
return row.uid === selectedRow ? 'highlight' : '';
}
单击时可以将变量设置为行的uid,并且在cellClass函数内部,可以检查当前行的uid是否与所选行的uid匹配,如果是,则可以将类设置为类正确反映所选行的背景颜色。
var selectedRow = null;
gridApi.cellNav.on.navigate($scope, function(selected) {
if ('.ui-grid-cell-focus ') {
selectedRow = selected.row.uid;
gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);
}
});
以下是您更新的plunker的链接:http://plnkr.co/edit/AgpAI2cmdqgNsSLVNjYA?p=preview
如果您不喜欢cellClass方法,您可以定义自定义cellTemplates,并对您在行实体上设置的属性做出类似的反应。