0

我正在查看SlickGrid's editors/ formattersfeatures 以了解这些将如何修改data用于构建网格的对象(因为据我了解,对表所做的修改会自动复制到data对象中)。

我正在查看一个特定示例,该示例显示了如何booleans将其编辑和格式化为复选框(而不是处理一个truefalse字符串),并注意到复制到data对象的值是不一致的。

要了解我的意思,请编辑effortDriven前 4 行的列,如下所示:
-任务 0:请勿触摸
-任务 1:检查
-任务 2:请勿触摸
-任务 3:选中和取消选中

在此处输入图像描述

现在在你的萤火虫控制台中,提醒数据对象:

在此处输入图像描述

以下是您将获得的effortDriven字段值:
-任务 0true
-任务 1checked
-任务 2false
-任务 3(void 0)

正如你所看到的,对于一个最初应该是 a 的字段boolean,我们最终得到了 4 个不同的值。作为一般评论,我认为逻辑formatters/editors只是检查可视化,但保持data对象的完整性:因此,我强烈建议人们在使用SlickGrid时仔细检查他们的data对象是如何更新的formatters/editors,并且不要假设数据完整性被保留)。

如何确保我的data对象保留 2 个boolean值,同时仍使用 UI 上的复选框?

4

2 回答 2

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;  
  }
};
于 2012-07-05T10:40:48.803 回答
0

我也发现了这个问题。在自定义CheckboxEditorslick.editors.js只需更改值序列化器:

function CheckboxEditor(args) {

    ...

    this.serializeValue = function () {
        return $select.attr("checked") ? true : false;
    };

    ...

}
于 2012-07-05T10:52:21.280 回答