2010-09-28 4 views
1

Я использую метод addRowData для заполнения моей сетки. Но мои текущие данные JSON имеют другой объект внутри каждого объекта в данных JSON. Чтобы сделать это вид в сетке, я следил за обозначениями в documentation of jQgrid. Но этот столбец остается пустым.JSON точка в jQgrid?

Мое определение сетки:

$("#ExpenseTable").jqGrid({ 
    datatype : "local", 
    mtype : 'GET', 
    colNames : [ 'Entry ID','User Name', 'Category Name','Date','Amount','Status'], 
    colModel : [ 
       {name:'expnsId',label:'ID', width:150 ,editable: false}, 
       {name:'userName',label:'NAME', width:150 ,editable: false}, 
       {name:'category.catName',label:'CATEGORY', width:150 ,editable: false}, 
       {name:'date',label:'DATE', width:150 ,editable: false}, 
       {name:'amount',label:'AMOUNT', width:150 ,editable: false}, 
       {name:'status',label:'STATUS', width:150 ,editable: false}, 
       ], 
    pager : '#ExpPager', 
    rowNum : 10, 
    rowList : [ 10, 20, 30 ], 
    sortname : 'invid', 
    sortorder : 'desc', 
    viewrecords : true, 
    autowidth : false, 
    caption : 'Expenses Details', 
    onSelectRow : function(expnsId) { dispExpensData(expnsId); } 
    }); 

Код, используемый для заполнения сетки:

ExpenseDetailsManagement.getexpenseList(function(expRecords){ 
    //for(count = 0; count<expRecords.length; count++){ 
    // expRecords[count].catId = expRecords[count].category.catId; 
    // expRecords[count].catName = expRecords[count].category.catName; 
    //}//I am using this for loop to convert the category object 
$("#ExpenseTable").clearGridData(true); 
$("#ExpenseTable").jqGrid('addRowData', "expnsId", expRecords); 
}); 

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

alt text

Любая идея или предложения о том, где я иду не так!

ответ

1

Если значения из столбца «expnsId» уникальны, я рекомендую вам использовать параметр key:true в качестве опции «expnsId» coulmn. Тогда значение столбца будет использоваться как идентификатор строки.

Для того, чтобы помочь вам с названиями пунктирных столбцов, вы должны публиковать данные JSON, а не экраны с текстом «Объект» на месте самой важной информации. Вероятно, ваша основная проблема может быть легко решена в отношении localReader вместо пунктирного имени.

Еще один маленький примечание. Beause вы используете опцию label для всех столбцов, вы можете удалить массив colNames, который не будет использоваться. Опция editable: false по умолчанию, поэтому вы также можете удалить ее. Параметр mtype вы также можете удалить, поскольку он не будет использоваться для локальных данных.

ОБНОВЛЕНО: Извините, что значение первого параметра addRowData должно содержать имя столбца с данными, как вы. Поэтому я удалил первый абзац из первой версии моего ответа.