Slickgrid - 立即在显示中填充新行

时间:2014-03-12 10:02:59

标签: slickgrid

我正在使用enableAddNewRow: true创建一个可编辑的slickgrid。

我希望每个新行都显示默认数据。

example 4中建议的解决方案是使用onAddNewRow事件:

grid.onAddNewRow.subscribe(function (e, args) {
    var item = {"num": data.length, "id": "new_" + (Math.round(Math.random() * 10000)), "title": "New task", "duration": "1 day", "percentComplete": 0, "start": "01/01/2009", "finish": "01/01/2009", "effortDriven": false};
    $.extend(item, args.item);
    dataView.addItem(item);
});

这不是我想要的,但是因为onAddNewRow事件在你在其中一个单元格中放入一个值之后才会触发(即你必须在其中一个单元格中键入内容然后选项卡/单击远离单元格,然后在行中显示默认值。

我需要的是一旦新行出现在网格中就插入默认值。

有人有建议吗?

修改 所以,在进一步的实验中,我想出了以下内容:

grid.onBeforeEditCell.subscribe(function(e, args) {
    if (typeof args.item === 'undefined) {
        grid.onAddNewRow.notify({}, null, null);
    }
})

,只要访问新行中的第一个单元格,就会使用默认数据添加新行。

我现在的问题是,在完全添加新行之前打开单元格编辑器,这意味着编辑器没有获取默认值,因为在编辑器初始化时它仍未定义。 / p>

1 个答案:

答案 0 :(得分:1)

由于您的问题似乎是时间问题,因此建议使用超时(jQuery或原始javascript)。我提到jQuery,因为首先SlickGrid运行在jQuery之上,但也因为经常使用jQuery我们需要插入一些timeout()特别是对于Firefox,因为它呈现不同。话虽这么说,您可以尝试使用jQuery timeout()函数:

setTimeout(function() {
      // Do something after 1 second... 
}, 1000);