2013-08-30 2 views
0

Hy ребят, так что мои данные выглядят следующим образом:как карта многослойной jsondata к jqgrid

TimeSheetData

[ 
    {ID:2, Name:QXC, Items:[{Status:1, Hours: 8},{Status:1, Hours: 4}]}, 
    {ID:5, Name:ABC, Items:[{Status:1, Hours: 6},{Status:1, Hours: 0}]} 
] 

и моя сетка выглядит следующим образом:

jQuery("#rowed5").jqGrid({   
    data: timeSheetData, 
    datatype: "local", 
    height: 250, 
    colNames:['ID','Name','Monday','Tuesday'], 
    colModel:[ 
       {name:'ContractID', index:'ContractID', jsonmap:'?????', width:200, editable:false, sortable:false}, 
       {name:'EmployeeName', index:'EmployeeName', jsonmap:'?????'' ,width:200, editable:false, sortable:false}, 
       {name:'Monday', index:'Monday', jsonmap:'?????', width:200, editable:false, sortable:false}, 
       {name:'Tuesday', index:'Tuesday'jsonmap:'?????'jsonmap:'timeSheetRow1.timeSheetItem2.WorkedHours', width:200, editable:false, sortable:false} 
      ], 
    caption: "Input Types", 
    jsonReader: {repeatItems: false, root: "timeSheetRow1"} 
    }); 

И мне интересно, что в чем мне нужно положить вместо ????? для получения следующих двух строк в таблице jqgrid:

2, QXC, 8, 4 
    5, ABC, 6, 0 

Thx заранее!

ответ

0

Итак, я понял. Моя проблема заключалась в том, что я смотрел только на ценность объекта, но не на его структуру. Таким образом, с учетом структуры объектов заключается в следующем:

//TimeSheetData: 
var timeSheetData = new Object(); 
timeSheetData.Rows = [row1,row2]; /*Rows is an 
Array containing Row objects*/ 

//Row: 
var row1 = new Object(); 
row1.ID = 19; 
row1.Name = "F.L."; 
row1.Items = [item1, item2]; /*Items 
is an object with containing other objects(Item) and some properties*/ 

//Item: 
var item1 = new Object(); 
item1.Status = 0; 
item1.Hours = 6; 

Таким образом, чтобы подвести итог, ответ на мой вопрос (как же colModel выглядеть как в моей ситуации) является:

..., 
colModel:[ 
      {name:'ContractID', index:'ContractID', jsonmap:'ID', width:200, editable:false, sortable:false}, 
      {name:'EmployeeName', index:'EmployeeName', jsonmap:'Name' ,width:200, editable:false, sortable:false}, 
      {name:'Monday', index:'Monday', jsonmap:'Items.0.Hours', width:200, editable:false, sortable:false}, 
      {name:'Tuesday', index:'Tuesday', jsonmap:'Items.1.Hours', width:200, editable:false, sortable:false} 
     ], 
jsonReader: {repeatItems: false, root: "Rows"} 
}); 
jQuery("#rowed5")[0].addJSONData(timeSheetData.Rows); 
Смежные вопросы