私はjQuery 1.9.1でjqGrid 4.4.5を使用しており、サーバー側ではASP.NET MVC 4を使用しています(ただし、これは問題の一部ではないと思います)。
シンプルな jqGrid が正常に動作しており、それにシンプルなサブグリッドを追加しようとしています。サブグリッドを構成し、それをサーバー側の別のコントローラーに接続しました。サブグリッド データを表示する必要があるところまで、すべてが正常に動作しているようです。
最初のグリッド ロードは、コントローラーのメイン データ メソッドを呼び出し、json を取得して行を表示します。+ 記号をクリックすると、行が展開され、コントローラーのセカンダリ データ メソッドへのコールバックが発生します。2 番目のメソッドは、サブグリッド データを有効な 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>