AG-GRID - 使用 restoreFilterModel 有效,但在恢复过滤器之前会重新绘制整个网格
AG-GRID - Using restoreFilterModel works, but entire grid is redrawn before filter is restored
我已经让我的网格使用 saveFilterModel 和 restoreFilterModel 来保存和恢复过滤器。我的 httpRequest 完成后,将重新绘制网格并 "flashes",然后应用 restoreFilterModel。因此,从功能上讲它是合理的,但从用户体验的角度来看,这是不可取的。有没有一种方法可以在不刷新网格的情况下静默更新行数据?本质上等同于 Excel VBA/Macro.
中的 "Application.ScreenUpdating = False"
我的刷新功能:
function refreshData() {
saveFilterModel();
let httpRequest = new XMLHttpRequest();
httpRequest.open('GET', '**********');
httpRequest.send();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var httpResult = JSON.parse(httpRequest.responseText);
gridOptions.api.setRowData(httpResult);
gridOptions.api.updateRowData({force : true});
restoreFilterModel();
}
};
提供了行为的gif(例如设置为每3秒请求一次数据)
一些尝试:
在 gridOptions 中设置 deltaRowDataMode=true。这会导致网格仅对不同的数据应用更改,而不是仅替换所有数据。
删除对 updateRowData() 的调用。 setRowData() 应该足够了,然后使用 updateRowdata({force: true}) 可能会导致它更新两次。
在使用 setRowData() 应用新数据之前恢复过滤器模型。如果过滤器型号与默认过滤器型号不同,首先设置数据会导致闪烁,因为您会看到由于新过滤器而导致的数据更改。
我已经让我的网格使用 saveFilterModel 和 restoreFilterModel 来保存和恢复过滤器。我的 httpRequest 完成后,将重新绘制网格并 "flashes",然后应用 restoreFilterModel。因此,从功能上讲它是合理的,但从用户体验的角度来看,这是不可取的。有没有一种方法可以在不刷新网格的情况下静默更新行数据?本质上等同于 Excel VBA/Macro.
中的 "Application.ScreenUpdating = False"我的刷新功能:
function refreshData() {
saveFilterModel();
let httpRequest = new XMLHttpRequest();
httpRequest.open('GET', '**********');
httpRequest.send();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
var httpResult = JSON.parse(httpRequest.responseText);
gridOptions.api.setRowData(httpResult);
gridOptions.api.updateRowData({force : true});
restoreFilterModel();
}
};
提供了行为的gif(例如设置为每3秒请求一次数据)
一些尝试:
在 gridOptions 中设置 deltaRowDataMode=true。这会导致网格仅对不同的数据应用更改,而不是仅替换所有数据。
删除对 updateRowData() 的调用。 setRowData() 应该足够了,然后使用 updateRowdata({force: true}) 可能会导致它更新两次。
在使用 setRowData() 应用新数据之前恢复过滤器模型。如果过滤器型号与默认过滤器型号不同,首先设置数据会导致闪烁,因为您会看到由于新过滤器而导致的数据更改。