我有一个大约100行的滑板。 它的数据在5秒内刷新,但每次更新都会令人不安,滚动被重置。 我曾尝试使用dataview和dataview.refresh(),但这次没有更改反映到网格。
这是我每次刷新时尝试的内容:
mapMemoryTableDataView.beginUpdate();
mapMemoryTableDataView.setItems(data);
mapMemoryTableDataView.endUpdate();
mapMemoryTableDataView.refresh();
if(mapMemoryTableGrid == null)
mapMemoryTableGrid = new Slick.Grid("#datatableMap1", mapMemoryTableDataView, columns, options);
mapMemoryTableGrid.updateRow(1)
mapMemoryTableGrid.render()
答案 0 :(得分:5)
你一定要试试invalidate
方法
grid.invalidate();
根据个人经验,刷新网格所需要做的就是使用网格上提供的invalidate
方法。这会更新所有内容并保留滚动。
通过刷新,您的意思是您要替换数据,还是更新某些行?
答案 1 :(得分:3)
我已拨打以下内容
mapMemoryTableDataView.beginUpdate();
mapMemoryTableDataView.setItems(data);
mapMemoryTableDataView.endUpdate();
mapMemoryTableDataView.refresh();
for (var i = 0; i < olist.length; i++) {
mapMemoryTableGrid.updateRow(i)
}
无效和刷新无法解决我的问题。
答案 2 :(得分:3)
只需使用
gridItems.invalidate();
gridItems.render();
invalidate:表示需要验证您想要的行 - 在这种情况下:no parameter row id = all row
答案 3 :(得分:0)
我调用了以下代码:
mapMemoryDataView.beginUpdate();
mapMemoryDataView.setItems(pointsRows, "id");
mapMemoryDataView.endUpdate();
mapMemoryDataView.syncGridSelection(pointsGrid, false);
for (var i = 0; i < pointsRows.length; i++) {
mapMemoryTableGrid.updateRow(i);
}
mapMemoryTableGrid.invalidate();
mapMemoryTableGrid.render();
答案 4 :(得分:0)
对我有用的是:
events[v_current_row_num].field_id = v_new_field_id;
events_grid.updateRowCount();
events_grid.render();
我使用不同的网格和视图名称,但概念围绕调用updateRowCount和渲染函数。