0

我将 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>
4

2 回答 2

0

subgrid的属性jsonReader应该包含repeatitems: true而不是falsesubgrid属性的默认值已经是{root:"rows", repeatitems: true, cell:"cell"}。所以我认为删除subgrid属性jsonReader应该可以解决你的问题。

于 2013-04-14T22:19:23.757 回答
0

如果您的给定函数之一不存在,您在子网格中的数据也不会显示。因此,如果您输入错字,则会显示空行:

afterSave: ReloadSubGrid, onError: UpdateFailed, delOptions:...
...
function ReloadSbuGrid(rowid, response) {
    ...
}

错字:ReloadSbuGrid 应该是 ReloadSubGrid

于 2013-11-01T14:32:30.030 回答