ag网格主/细节将外部过滤器应用于细节网格



我有几个正在处理的ag网格,它们设置为Master/Detail。我在主屏幕上有一个外部过滤器设置,效果很好。我可以将其扩展到细节网格,但遇到了几个问题:

  1. 过滤器似乎仅适用于展开的节点。关闭并重新打开会重置数据,尽管筛选器可能仍有值
  2. 我还没有找到一种方法,让过滤器忽略主过滤器,如果过滤器匹配细节,但不匹配主过滤器
  3. 如何在细节匹配的地方展开主控形状。我想我需要使用一个超时,这样网格就不会在每次按键时膨胀和折叠,但我不知道如何知道哪个网格有匹配的数据

下面的代码是我迄今为止只处理细节网格的代码,但这似乎很慢(plunker:https://next.plnkr.co/edit/S1PNvugCbjPh55jI)。

onFilterTextBoxChanged() {
// this.gridApi.setQuickFilter(document.getElementById('filter-text-box').value);
this.gridApi.forEachNode(function(node) {
console.log('node.detailNode', node)
node.gridApi.forEachDetailGridInfo(function(detailGridApi){
console.log('detailGridApi', detailGridApi);
detailGridApi.api.setQuickFilter(document.getElementById('filter-text-box').value);
})
});
}

只是一个建议,在过滤盒上发生的每个按键事件上->

1( 在调用quickFilter函数之前,请使用网格事件expandOrCollapse展开所有详细信息网格,因为它在展开状态下以某种方式进行过滤。

2( 当搜索筛选框为空时折叠网格,并有交叉标记将其清空。

如果不适合您的需求,请忽略。谢谢

我通过将Detail网格中的数据放入Master中的隐藏列中来解决此问题。我把所有字段连接起来(用空格分隔(。它与this.gridApi.setQuickFilter(this.searchText);一起工作

/* Hidden - bringin it here only to make it searchable */
{
field: 'detailed fields',
valueGetter: params => {
if (params.data.invoices && params.data.invoices.length > 0) {
return params.data.invoices.map(invoice => invoice.invoice_date).join(' ');
}
return null;
},
hide: true
},

最新更新