我将 jqGrid 4.4.5 与 jQuery 1.9.1 一起使用,并且在服务器端,我使用的是 ASP.NET MVC 4(尽管我认为这不是问题的一部分)。
我有一个简单的 jqGrid 工作正常,我正在尝试向它添加一个简单的子网格。我已经配置了子网格,将其连接回服务器端的单独控制器,一切似乎都运行良好,直到我需要显示子网格数据为止。
初始网格加载调用我的控制器的主要数据方法,获取 json 并显示行。单击 + 号会展开一行,从而调用控制器的辅助数据方法。辅助方法将子网格数据作为有效的 json 返回(我使用 Google Chrome 开发工具对其进行了验证)。子网格展开并显示正确的行数和正确的标题,但值不会出现在单元格中。
我已经浏览了在线文档和这里的各种建议,但似乎没有任何效果。我已经使用 jsonReader 配置玩了很多,但它似乎没有帮助(如果我将 repeatitems 设置为 true,它根本不起作用)。将 gridview 从 true 翻转为 false 似乎也无济于事。
任何帮助表示赞赏。
这是对子网格控制器方法的实际调用:
/Schedule/SubGridData?nd_=1365975664423&id=1002200&InspectionScheduleId=1002200&ItemTypeId=1000003
这是调用返回的 Google Chrome 声称的数据:
{"rows":[{"cell":["Tony\u0027s HomeBrew","Icky Beer"]},{"cell":["Tony\u0027s WorkBrew","Tasty Beer"]}]}
这是网格配置:
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery('#GridDataBasic').jqGrid({
autoencode:true,
autowidth:true,
caption:'Inspection Schedule',
datatype:'json',
jsonReader:{ repeatitems:false, id: 'InspectionScheduleId', subgrid: { root: 'rows', repeatitems: false, cell: 'cell', id: 'id' } },
emptyrecords:'No record Found',
gridview:false,
height:'100%',
loadui:'block',
pager:'#pager',
rowList:[10,15,20,50],
rowNum:10,
rowattr: function(rowData) {var dueDate = new Date(parseInt(rowData.DueDate.substr(6)));var nowDate = new Date();var colorDate = new Date(dueDate - (rowData.RedOffsetInMinutes * 60000));if (nowDate > colorDate) { return {'class': 'redOffsetColor'}; }colorDate = new Date(dueDate - (rowData.OrangeOffsetInMinutes * 60000));if (nowDate > colorDate) { return {'class': 'orangeOffsetColor'}; }colorDate = new Date(dueDate - (rowData.YellowOffsetInMinutes * 60000));if (nowDate > colorDate) { return {'class': 'yellowOffsetColor'}; }colorDate = new Date(dueDate - (rowData.GreenOffsetInMinutes * 60000));if (nowDate > colorDate) { return {'class': 'greenOffsetColor'}; }},
viewsortcols:[true,'vertical',true],
shrinkToFit:true,
url:'/Schedule/IndexGridData',
viewrecords:true,
subGrid: true,
subGridUrl : '/Schedule/SubGridData',
subGridModel : [ {
name : [ 'Item Name','Item Description' ],
width : [ 50,50 ],
align : [ 'left','left' ],
params : [ 'InspectionScheduleId','ItemTypeId' ]
} ],
colModel: [
{
name:'InspectionScheduleId',
hidden:true,
key:true,
label:'InspectionScheduleId',
sortable:false,
index:'InspectionScheduleId'
},{
name:'ItemTypeId',
hidden:true,
label:'ItemTypeId',
sortable:false,
index:'ItemTypeId'
},{
name:'GreenOffsetInMinutes',
hidden:true,
label:'GreenOffsetInMinutes',
sortable:false,
index:'GreenOffsetInMinutes'
},{
name:'YellowOffsetInMinutes',
hidden:true,
label:'YellowOffsetInMinutes',
sortable:false,
index:'YellowOffsetInMinutes'
},{
name:'OrangeOffsetInMinutes',
hidden:true,
label:'OrangeOffsetInMinutes',
sortable:false,
index:'OrangeOffsetInMinutes'
},{
name:'RedOffsetInMinutes',
hidden:true,
label:'RedOffsetInMinutes',
sortable:false,
index:'RedOffsetInMinutes'
},{
name:'ItemTypeName',
label:'Item Type',
sortable:false,
index:'ItemTypeName'
},{
align:'center',
name:'DueDate',
formatter:'date', formatoptions: {srcformat:'ISO8601Long', newformat:'m/d/Y H:i:s'},
label:'Due Date',
sortable:true,
index:'DueDate'
}
]
});
});
</script>