【问题标题】:Resetting SlickGrid for new data为新数据重置 SlickGrid
【发布时间】:2013-07-12 17:47:26
【问题描述】:

我有一个 SlickGrid,用户可以在其中选择各种数据集。因此架构可以改变。因此,当用户选择一个新数据集时,我需要删除 SlickGrid 并重新开始,或者清除现有的。

什么是正确的方法?我应该只删除 DOM 节点吗?我查看了 API,找不到任何似乎可以完成我想要做的事情的网格级调用。

谢谢

【问题讨论】:

  • 您可以使用新值更新 DataView 并在网格上调用 invalidateRows。
  • 我正在使用列数组和行数组进行绑定。不是数据视图。不过我会调查的。谢谢。
  • 不管怎样,如果数据改变了,你必须告诉 slickgrid 它已经改变了。一种方法是通过 invalidateRows
  • 更改数据并调用grid.invalidateRows(),然后调用grid.render()

标签: slickgrid


【解决方案1】:

呼叫:

grid.setData(<new data>)

【讨论】:

  • 我昨晚尝试的是:grid.setData({}); grid.SetColumns({}); grid.setColumns(newColumns); grid.setData(newRows);这似乎不起作用。今晚我再试一次。
【解决方案2】:

使用数据视图和“OnChange()”调用以下行,

grid.invalidateAllRows();
dataView.setItems(newData, "Id");
grid.render();

如果你不使用数据视图试试这个,

        var data = []; \\or new array
        grid.setData(data);
        grid.render();

【讨论】:

  • 使用IE11很慢!没有其他更好的选择吗?
【解决方案3】:

下面的代码为我完成了从 javascript 重置 slickgrid 的工作

dataView.beginUpdate();
dataView.getItems().length = 0;
dataView.endUpdate();

【讨论】:

    【解决方案4】:
    Any of the following can be used to add data
    
    
    //add data using slickgrid object
    data.splice(data.length, 1, item);
    grid.setData(data);
    grid.invalidateRow(data.length);
    grid.render();
    
    
    //add single item using data view
    dataView.addItem(item);
    grid.updateRowCount();
    grid.invalidateRow(data.length);
    grid.render();
    
    
    //set all new data set in grid, using a new set of data including added on (Mutliple rows)
    data.splice(data.length, 1, item);
    dataView.setItems(data, 'ID');   
    grid.invalidateAllRows();
    grid.render();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-27
      • 2012-01-11
      • 1970-01-01
      • 2013-08-21
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多