启用分组后,使用 row.entity 不起作用
using row.entity does not work when grouping is enabled
我在 ui-grid 中使用分组功能,但我想按 taskId 而不是 taskName 分组,因为 taskNames 在我的项目中不是唯一的。所以我这样做了,
$scope.gridOptions.columnDefs = [
{
field:'taskId',
displayName:'Task Name',
cellTemplate:'<span>{{row.entity.taskName}}</span>'
grouping:{
groupingPriority:0
}
}
.....
]
其中网格按 taskId 分组,但 taskName 用于表示。
但这不能正确呈现位于组顶部的 header-row。但在组中为 children 正确呈现。有人遇到过这个问题吗?
组顶层没有行,因为一个组下可能有很多 child 行。所以 row.entity 实际上是具有组级别值的 object。您可以遍历 children 组,然后使用其中之一来渲染组 header.
您可以尝试类似的方法,
$scope.gridOptions = {
//enableFiltering: true,
treeRowHeaderAlwaysVisible: false,
columnDefs: [
{ name: 'name', width: '30%' },
{ name: 'gender', grouping: { groupPriority: 1 }, sort: { priority: 1, direction: 'asc' }, width: '20%', cellFilter: 'mapGender' },
{ name: 'age', treeAggregationType: uiGridGroupingConstants.aggregation.MAX, width: '20%' },
{ name: 'company', width: '25%' },
{ name: 'registered', width: '40%', cellFilter: 'date', type: 'date' },
{ name: 'zip', displayName:'State' ,grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'desc' }, width: '35%', cellTemplate: '<span>{{grid.appScope.name(grid, row)}}</span>' },
//the below commented is the actual col but I did grouping with zip and put state of that zip
//{ name: 'state', grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'desc' }, width: '35%', cellTemplate: '<div><div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents" title="TOOLTIP">{{COL_FIELD CUSTOM_FILTERS}}</div></div>' },
],
};
$scope.name = function(grid,row,col)
{
console.log(row);
if(row.groupHeader && row.treeNode.children[0].row.treeNode.children[0])
{
var entity = row.treeNode.children[0].row.treeNode.children[0].row.entity;
return entity.state;
}
else if(row.treeNode.children[0])
{
var entity = row.treeNode.children[0].row.entity;
return entity.state;
}
return row.entity.state;
}
我在 ui-grid 中使用分组功能,但我想按 taskId 而不是 taskName 分组,因为 taskNames 在我的项目中不是唯一的。所以我这样做了,
$scope.gridOptions.columnDefs = [
{
field:'taskId',
displayName:'Task Name',
cellTemplate:'<span>{{row.entity.taskName}}</span>'
grouping:{
groupingPriority:0
}
}
.....
]
其中网格按 taskId 分组,但 taskName 用于表示。 但这不能正确呈现位于组顶部的 header-row。但在组中为 children 正确呈现。有人遇到过这个问题吗?
组顶层没有行,因为一个组下可能有很多 child 行。所以 row.entity 实际上是具有组级别值的 object。您可以遍历 children 组,然后使用其中之一来渲染组 header.
您可以尝试类似的方法,
$scope.gridOptions = {
//enableFiltering: true,
treeRowHeaderAlwaysVisible: false,
columnDefs: [
{ name: 'name', width: '30%' },
{ name: 'gender', grouping: { groupPriority: 1 }, sort: { priority: 1, direction: 'asc' }, width: '20%', cellFilter: 'mapGender' },
{ name: 'age', treeAggregationType: uiGridGroupingConstants.aggregation.MAX, width: '20%' },
{ name: 'company', width: '25%' },
{ name: 'registered', width: '40%', cellFilter: 'date', type: 'date' },
{ name: 'zip', displayName:'State' ,grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'desc' }, width: '35%', cellTemplate: '<span>{{grid.appScope.name(grid, row)}}</span>' },
//the below commented is the actual col but I did grouping with zip and put state of that zip
//{ name: 'state', grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'desc' }, width: '35%', cellTemplate: '<div><div ng-if="!col.grouping || col.grouping.groupPriority === undefined || col.grouping.groupPriority === null || ( row.groupHeader && col.grouping.groupPriority === row.treeLevel )" class="ui-grid-cell-contents" title="TOOLTIP">{{COL_FIELD CUSTOM_FILTERS}}</div></div>' },
],
};
$scope.name = function(grid,row,col)
{
console.log(row);
if(row.groupHeader && row.treeNode.children[0].row.treeNode.children[0])
{
var entity = row.treeNode.children[0].row.treeNode.children[0].row.entity;
return entity.state;
}
else if(row.treeNode.children[0])
{
var entity = row.treeNode.children[0].row.entity;
return entity.state;
}
return row.entity.state;
}