我正在使用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>
答案 0 :(得分:1)
由于您的问题似乎是时间问题,因此建议使用超时(jQuery或原始javascript)。我提到jQuery,因为首先SlickGrid运行在jQuery之上,但也因为经常使用jQuery我们需要插入一些timeout()特别是对于Firefox,因为它呈现不同。话虽这么说,您可以尝试使用jQuery timeout()
函数:
setTimeout(function() {
// Do something after 1 second...
}, 1000);