我有一个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","lastName":"Doe","middleName":"Z"},"projectId":50003,"grade":"8","statusCode":"A","gradYear":2016,"buyer":true}
];
Run Code Online (Sandbox Code Playgroud)
我想将我的列绑定到驻留在displayName对象中的名称属性,但我无法使列定义识别数据所在的位置.以下是我的firstName列定义的示例:
{id: 'displayName.firstName', field: 'displayName.firstName', name: 'First Name',
width: 110, sortable: true, editor: TextCellEditor, formatter: SpaceFormatter,
cssClass: '', maxLength: 250, editable: true}
Run Code Online (Sandbox Code Playgroud)
虽然数据存在,但视图不会呈现名称.是否可以将列绑定到驻留在另一个对象中的对象属性?如果是这样,我做错了什么?
Sil*_*eNT 15
默认情况下,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);
Run Code Online (Sandbox Code Playgroud)
该代码使用slickgrid 2.0进行测试,工作正常.不幸的是,似乎slickgrid代码有点不一致,编辑器没有考虑这个选项,所以只有在没有编辑的情况下显示数据时,此解决方案才可用.
| 归档时间: |
|
| 查看次数: |
5619 次 |
| 最近记录: |