2014-02-17 86 views
0
var data = [{"Id":40072,"Id2":40071,"SmDetails":{"Id1":40071,"Id2":40072}}] 

我想在列中显示SmDetails.Id1。这怎么可能?我想:如何将列映射到SlickGrid中的复杂对象

var columns = [{name:'Personnel',field:SmDetails.id1,id:'detailId'}]; 

请帮我 请帮我

**My latest code** 
     var data = [{"Id":40072,"Id2":40071,"allocationDetails":{"Id1":40071,"allocationDetails":{"accommodationId":4007}}}] 
    var grid; 
       var columns = [          {name:"Personnel",field:"allocationDetails",fieldIdx:'accommodationId', id:"accommodationId"}]; 
       var options = { 
        enableCellNavigation: true, 
        enableColumnReorder: false, 
        dataItemColumnValueExtractor: 
                   function getValue(item, column) { 
         var values = item[column.field];        
         if (column.fieldIdx !== undefined) { 
       return values && values[column.fieldIdx]; 
       } else { 
       return values; 
       }}}; 
       var gridData=$scope.Vo;//This return as json format       
       grid = new Slick.Grid("#testGrid",gridData, columns); 
    This is the code tried recently. 
+0

尝试'SmDetails.Id1'(我是大写) –

+0

是的,我尝试过相同的方式,但它没有工作。 – user3319065

回答

0

您需要提供custom value extractor告诉电网如何解读的对象。

var options = { 
    enableCellNavigation: true, 
    enableColumnReorder: false, 
    dataItemColumnValueExtractor: 
    // Get the item column value using a custom 'fieldIdx' column param 
    function getValue(item, column) { 
    var values = item[column.field]; 
    if (column.fieldIdx !== undefined) { 
     return values && values[column.fieldIdx]; 
    } else { 
     return values; 
    } 
    } 
}; 

列定义看起来像:

{ 
    id: "field1", 
    name: "Id1", 
    field: "SmDetails", 
    fieldIdx: 'Id1' 
}, { 
    id: "field2", 
    name: "Id2", 
    field: "SmDetails", 
    fieldIdx: 'Id2' 
} //... etc 

退房this fiddle的工作示例。

+0

我在我的应用程序中试过这个。但是值显示为[object Object]。 – user3319065

+0

将您的最新代码添加到原始文章的末尾,以便我可以看到如何设置它。 – Origineil

+0

请检查最新评论添加 – user3319065

0

试试这个你data转换成单一的长度值的对象...

newData = {}; 
for(key in data[0]){ 
    parentKey = key; 
    if(typeof(data[0][key]) == "object"){ 
     childData = data[0][key]; 
     for(key in childData){ 
      childKey = key; 
      newKey = parentKey+childKey; 
      newData[newKey] = childData[childKey]; 
     } 
    } else { 
     newData[key] = data[0][key]; 
     } 
} 

这将您data对象转换这样

newData = {Id: 40072, Id2: 40071, SmDetailsId1: 40071, SmDetailsId2: 40072}; 

现在使用这个newData你的数据映射项目在网格

-1

我觉得这适用于嵌套属性,例如:

var columns = [ 
    { id: "someId", name: "Col Name", field: "myRowData.myObj.myProp", width: 40} 
.. 
]; 

var options { 
... 
dataItemColumnValueExtractor: function getItemColumnValue(item, column) { 
    var val = undefined; 
    try { 
     val = eval("item." + column.field); 
    } catch(e) { 
     // ignore 
    } 
    return val; 
    } 
}; 
+1

-1使用'eval' –

相关问题