代码之家  ›  专栏  ›  技术社区  ›  Kim Christensen

Slickgrid-显示时立即填充新行

  •  0
  • Kim Christensen  · 技术社区  · 12 年前

    我正在制作一个可编辑的幻灯片 enableAddNewRow: true .

    我希望每一个新行一出现就有默认数据。

    建议的解决方案 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);
    });
    

    然而,这并不是我想要的,因为 在添加新行上 只有在其中一个单元格中输入值(即,必须在其中一单元格中键入某个内容,然后在该行中显示默认值之前,从该单元格中制表/单击),事件才会启动。

    我需要的是一种在网格中显示新行时立即插入默认值的方法。

    有人建议吗?

    编辑 因此,在进一步的实验中,我得出了以下结论:

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

    一旦访问新行中的第一个单元格。

    我现在的问题是,单元格编辑器是在完全添加新行之前打开的,这意味着编辑器不会选择默认值,因为它在编辑器初始化时仍然未定义。

    1 回复  |  直到 12 年前
        1
  •  1
  •   ghiscoding    12 年前

    由于您的问题似乎是定时问题,因此建议使用超时(jQuery或原始javascript)。我提到jQuery,因为首先SlickGrid运行在jQuery之上,但也因为在jQuery中,我们经常需要插入一些timeout(),特别是对于Firefox,因为它的渲染方式不同。也就是说,您可以尝试使用jQuery timeout() 功能如下:

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