我有一个简单的UI网格,包含以下选项:
$scope.transactionGrid = {
enableSorting : true,
enableColumnResize : true,
enableScrollbars : true,
enablePaginationControls : false,
minRowsToShow : 6,
onRegisterApi : function(gridApi) {
$scope.gridEventsApi = gridApi;
}
};
我想要隐藏具有特定值deleted: "y"
。
$scope.transactionGrid.data = [
{ Name: "First", deleted: "y" },
{ Name: "Second", deleted: "y" },
{ Name: "Third", deleted: "n" },
{ Name: "Fourth", deleted: "n" }
];
如果没有实际更改数据,是否可以从行中过滤出来?
答案 0 :(得分:5)
一种方法是调整行中继器模板以检查某些特定于行的值,并使行显示/隐藏。 我创建了a Plunkr来展示可能的解决方案。
首先,您需要创建行值检查器功能:
appScopeProvider: {
showRow: function(row) {
return row.deleted !== 'y';
}
},
然后通过将该检查添加到其行中继器
来调整其模板$templateCache.put('ui-grid/uiGridViewport',
...
ng-if=\"grid.appScope.showRow(row.entity)\"
...
}
答案 1 :(得分:1)
您可以通过创建单元格模板来隐藏它,并根据每个字段的行值隐藏它:
$scope.transactionGrid = {
enableSorting : true,
enableColumnResize : true,
enableScrollbars : true,
enablePaginationControls : false,
minRowsToShow : 6,
onRegisterApi : function(gridApi) {
$scope.gridEventsApi = gridApi;
}
// Column template definitions:
columnDefs: [
{
name: 'Name',
displayName: 'Name',
cellTemplate : '<div ng-if="row.entity.deleted">{{row.entity.Name}}</div>'
}
]
};
我制作了一个Plunk,以展示解决此问题的可行技术:https://plnkr.co/edit/XQRC45vaiZCySZYkEGrz?p=preview
答案 2 :(得分:1)
我知道你明确说过&#34;没有实际更改数据&#34;,但是将过滤的数据集分配给网格不会改变数据集,只会改变网格的数据。对于像这样的其他案例,它也可能是一个相关且有效的解决方案。
我分叉CMR&#39;} Plunk来证明这一点:http://plnkr.co/edit/NntwWb?p=preview
关键部分是在分配数据集时添加filter
:
$scope.gridOptions = {
data: $scope.myData.filter(function(row) {
return row.deleted !== "y";
})
};