Angular 角度5:根据条件隐藏ag网格行
我从服务得到以下响应,当Angular 角度5:根据条件隐藏ag网格行,angular,ag-grid,ag-grid-angular,Angular,Ag Grid,Ag Grid Angular,我从服务得到以下响应,当标志为真时,我必须隐藏整行(总共20列),否则显示它。如何在ag网格中实现这一点 data = { name: "A", flag: true }, { name: "B", flag: false }, { name: "C", flag: false } 我确实尝试了下面的useExternalFilter,然后我被困在了如何进一步使用这个useExternalFilter的问题上。谁能带
标志为真时,我必须隐藏整行(总共20列),否则显示它。如何在ag网格中实现这一点
data = {
name: "A",
flag: true
},
{
name: "B",
flag: false
},
{
name: "C",
flag: false
}
我确实尝试了下面的useExternalFilter
,然后我被困在了如何进一步使用这个useExternalFilter
的问题上。谁能带我过去吗
this.filterOptions = {
useExternalFilter: true
};
this.gridOptions = {
filterOptions: this.filterOptions
};
最简单的方法是,首先根据标志值过滤数据
const filteredData = this.data.filter(item => !item.flag);
然后将此过滤器数据设置为网格数据
this.gridOptions.setRowData(this.filteredData);
希望这将完成所需的即使我们可以使用api.setRowData(newData)
来显式地更新/删除您的数据,这种方法实际上会硬重置整个网格。根据报告,这将导致以下结果:
网格将丢弃所有以前的选择和过滤器,并完全删除
用新数据覆盖旧数据。这是第一次使用网格
这是最“暴力”的方式
因此,我建议您使用transaction.remove
。根据,您可以提供rowNodeId
来删除行,也可以使用基于对象引用的行来删除行
如前所述,首选此方法
网格保留所有活动的排序、分组和筛选,包括
更新以反映排序时数据的变化,
分组或筛选可能会受到影响
首先,我们可以得到需要删除的对象列表。然后,我们使用api.updateRowData(transaction)
执行事务来更新行数据,以便删除这些行
const removeData = this.data.filter(item => item.flag);
this.gridApi.updateRowData({ remove: removeData });
我创建了一个示例来说明上述行为。您想要的是:
this.gridOptions = {
// is always present, so return true
isExternalFilterPresent: function() {
return true;
},
// return true if flag=true
doesExternalFilterPass: function(rowNode) {
return rowNode.data.flag;
}
};
有关更多详细信息,请参阅如果要更动态地进行筛选,可以使用bind方法
this.gridOptions = {
// is always present, so return true
isExternalFilterPresent: function() {
return true;
}
}
ngOnInit() {
this.gridOptions.doesExternalFilterPass = this.isVisible.bind(this)
}
isVisible(rowNode): boolean {
// Write your logic. You can use rowNode and all component valiables.
}
@DilaniAlwis您的答案是100%正确:)我只是提供一个替代解决方案。