我正在通过api更新排序和筛选模型:
this.gridApi.setFilterModel(filterModels);
this.gridApi.setSortModel(sortModels);
这方面的问题是,我有一个服务器请求绑定到更改,即使这两种类型&过滤器,所以当用户更改,然后数据被更新。这意味着,当我更改代码模型时,比如恢复状态或重置筛选器,它会导致多个请求。
有没有一种在不触发事件的情况下更新筛选器/排序模型的方法?
我看到有一个ColumnEventType参数,但看不出它是如何工作的。我是否可以在事件处理程序中指定一些变量,以使它们忽略非用户生成的调用?
我正在尝试管理URL状态,所以当url查询参数更改时,我的代码设置了网格中的模型,但这最终导致页面多次重新加载,因为在设置模型时调用了onFilter和onSort事件,而且我没有办法阻止这种情况。
发布于 2018-10-12 14:17:49
此时,您必须亲自管理它,即在调用setModel之前,在应用程序的共享部分(可能是全局变量)中以某种方式将其标记出来。
然后,当你对这些事件做出反应时,检查它的遗产,猜猜它从哪里来。
请注意,目前我们已经为列事件添加了源代码,但是它们还不是模型事件的源,我们计划添加它们,但是我们没有ETA。
希望这能有所帮助
发布于 2019-04-10 11:36:39
我不得不解决类似的问题。我找到了适合我这种情况的解决方案。也许这能帮上忙。
for (let j = 0; j < orders.length; j++) {
const sortModelEntry = orders[j];
if (typeof sortModelEntry.property === 'string') {
const column: Column = this.gridColumnApi.getColumn(sortModelEntry.property);
if (column && ! column.getColDef().suppressSorting) {
column.setSort(sortModelEntry.direction.toLowerCase());
column.setSortedAt(j);
}
}
this.gridApi.refreshHeader();
其中,orders是键值对象的数组,其中键是列的名称,值是排序指令(asc/desc)。
没有刷新的Set过滤器是复杂的
for (let j = 0; j < filters.length; j++) {
const filterModelEntry = filters[j];
if (typeof filterModelEntry.property === 'string') {
const column: Column = this.gridColumnApi.getColumn(filterModelEntry.property);
if (column && ! column.getColDef().suppressFilter) {
const filter: any = this.gridApi.getFilterApi(filterModelEntry.property);
filter['filter'] = filterModelEntry.command;
filter['defaultFilter'] = filterModelEntry.command;
filter['eTypeSelector'].value = filterModelEntry.command;
filter['filterValue'] = filterModelEntry.value;
filter['filterText'] = filterModelEntry.value;
filter['eFilterTextField'].value = filterModelEntry.value;
column.setFilterActive(true);
}
}
}
过滤器中的属性:
发布于 2020-11-27 06:20:47
对于任何在2020年11月寻求解决这一问题的人来说,利用onFilterModified()可能会有所帮助。这是在onFilterChanged()之前调用的,因此在这里设置一个值(例如。( hasUserManuallyChangedTheFilters = false等)在过滤器更改事件中检查相同的内容是一种可能的解决办法。尽管我还没有发现类似于onSortChanged()事件的地方,但是在将排序应用到网格之前会调用它。
https://stackoverflow.com/questions/52693811
复制相似问题