Slick Grid中的数据更新

时间:2012-03-19 14:41:54

标签: javascript jquery slickgrid

我有一个大约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()

5 个答案:

答案 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和渲染函数。