【问题标题】:slickgrid update data without refreshslickgrid 更新数据而不刷新
【发布时间】:2017-04-04 09:13:56
【问题描述】:

我正在尝试通过保留当前页面而不刷新页面来更新 slickgrid 数据。我正在使用每 3 秒执行一次的 ajax 调用来更新网格数据。我尝试了下面给定的代码,但网格没有更新。下面是我的代码

$.ajax({
                type: "POST",
                url: url,
                dataType: "json",
                data: {
                    input1:<dynamic value>,
                    input2:<dynamic value>,
                    input3:<dynamic value>
                },
                success: function (data) {
                    var bindData = [];
                    for (var i = 0; i < data.length; i++) {
                        var item = {
                            id: i,
                            col1: data[i].col1,
                            col2: data[i].col2,
                            col3: data[i].col3,
                        };
                        bindData [i]= item;
                    }
                    dataview.beginUpdate();
                    dataview.setItems(bindData );
                    dataview.endUpdate();
                    grid.invalidateRows();
                    grid.render();

                }

            })

我也试过删除 grid.invalidateRows();但它不起作用。

【问题讨论】:

  • 也尝试添加grid.updateRowCount();
  • 使用现有数据也会更有效率,例如。 for (var i = 0; i &lt; data.length; i++) { data[i].id = i; }
  • 我将再次获取所有数据,而不管更新。所以如果没有变化, data[i].id 将为真。我可能听不懂你想表达的意思。

标签: javascript jquery slickgrid


【解决方案1】:

我改变了语句的顺序,它对我有用。网格没有更新,因为我在设置新数据后使行无效。

dataview.beginUpdate();
grid.invalidateAllRows();
dataview.setItems(bindData);
dataview.endUpdate();
grid.render();

【讨论】:

  • 实际上,我认为您可能无意中触发了grid.updateRowCount();。这就是 AJAX 示例中的名称,所以我会使用它。
猜你喜欢
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多