json – Slickgrid – 具有复杂对象的列定义

前端之家收集整理的这篇文章主要介绍了json – Slickgrid – 具有复杂对象的列定义前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 Java对象,其中person对象包含一个displayName对象.我已将其转换为JSP的 JSON对象.数据如下所示:
var people = [
{"id":52959,"displayName":{"firstName":"Jim","lastName":"Doe","middleName":"A"},"projectId":50003,"grade":"8","statusCode":"A","gradYear":2016,"buyer":false},{"id":98765,"displayName":{"firstName":"Jane","middleName":"Z"},"buyer":true}
];

我想将我的列绑定到驻留在displayName对象中的名称属性,但是我无法获取列定义来识别数据所在的位置.以下是我的firstName列定义的示例:

{id: 'displayName.firstName',field: 'displayName.firstName',name: 'First Name',width: 110,sortable: true,editor: TextCellEditor,formatter: SpaceFormatter,cssClass: '',maxLength: 250,editable: true}

该视图不会显示名称,尽管数据在那里.是否可以将列绑定到位于另一个对象内的对象属性?如果是这样,我做错了什么?

解决方法

默认情况下,Slickgrid不支持功能,但您可以通过将自定义提取添加到选项对象来解决此问题.
var options = {
  dataItemColumnValueExtractor: function(item,columnDef) {
    var names = columnDef.field.split('.'),val   = item[names[0]];

    for (var i = 1; i < names.length; i++) {
      if (val && typeof val == 'object' && names[i] in val) {
        val = val[names[i]];
      } else {
        val = '';
      }
    }

    return val;
  }
}

var grid = new Slick.Grid($("#slickgrid"),data,columns,options);

代码使用slickgrid 2.0进行测试,并且工作正常.不幸的是,似乎slickgrid代码有点不一致,编辑者没有考虑到这个选项,所以这个解决方案只有在不显示数据的情况下才可以使用.

原文链接:https://www.f2er.com/js/150640.html

猜你在找的JavaScript相关文章