我正在查看SlickGrid
的{{1}} / editors
功能,以了解这些功能如何修改用于构建网格的formatters
对象(因为据我所知,对表的修改会自动复制到data
对象。
我正在查看一个特定示例,该示例显示如何编辑data
并将其格式化为复选框(而不是处理booleans
或true
字符串)并注意到值已复制到false
对象不一致。
要了解我的意思,请按照以下步骤编辑前4行的data
列:
- 任务0 :请勿触摸
- 任务1 :检查
- 任务2 :请勿触摸
- 任务3 :选中并取消选中
现在在您的firebug控制台中,提醒数据对象:
以下是effortDriven
字段的值:
- 任务0 :effortDriven
- 任务1 :true
- 任务2 :checked
- 任务3 :false
正如您所看到的,对于最初应该是(void 0)
的字段,我们最终会得到4个不同的值。作为一般性评论,我认为boolean
的逻辑只是检查可视化,但保留formatters/editors
对象的完整性:因此我强烈建议人们使用data
来在使用SlickGrid
时仔细检查其data
对象的更新方式,并且不要假设保留数据完整性。)
如何在仍然使用用户界面上的复选框的同时确保我的formatters/editors
对象保留2个data
值?
答案 0 :(得分:0)
编辑CheckboxEditor
中的slick.editors.js
功能,如下所示:
this.applyValue = function (item, state) {
//item[args.column.field] = state; <-- remove that line, add lines below
if (state == 'checked') {
item[args.column.field] = true;
} else {
item[args.column.field] = false;
}
};
答案 1 :(得分:0)
我也发现了这个问题。在CheckboxEditor
中的自定义slick.editors.js
中,只需更改值序列化程序:
function CheckboxEditor(args) {
...
this.serializeValue = function () {
return $select.attr("checked") ? true : false;
};
...
}