【问题标题】:Inconsistent data with SlickGrid checkbox formatter/editor与 SlickGrid 复选框格式化程序/编辑器不一致的数据
【发布时间】:2012-07-05 10:40:47
【问题描述】:

我正在查看SlickGrid'seditors/formatters 功能,以了解这些功能将如何修改用于构建网格的data 对象(因为据我了解,对表格进行了修改会自动复制到data 对象)。

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

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

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

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

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

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

【问题讨论】:

    标签: javascript slickgrid


    【解决方案1】:

    编辑slick.editors.js中的CheckboxEditor函数如下:

    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;  
      }
    };
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-05-23
        • 1970-01-01
        • 1970-01-01
        • 2011-10-19
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多