我想使用嵌套子网格的jqgrid.但是,我发现的唯一示例是在主网格中填充一个url load-data调用和单独的调用来填充subgrids.
我的子网格数据作为嵌套文档存在于一个JSON结构中,如下面的代码段所示(我希望章节显示为书的子网格,文件是章节中的子网格).
我可以使用jqgrid从嵌套的JSON文档创建子网格吗?
{
_id: {"509403957ae7d3929edcb812"},
name: {"MYBOOK"},
layout: {
chapters [
{
name: "myfirstchapter",
sequence: 1,
title: "My First Chapter",
files: [
{
filetype: "tex",
name: "myfirstfile"
},
{
filetype: "tmpl",
name: "myfileb",
}
],
},
{
name: "mysecondchapter",
sequence: 2,
title: "My Second Chapter",
files: [
{
filetype: "tex",
name: "myintro"
},
{
filetype: "tex",
name: "myfilec",
}
],
],
}
}
Run Code Online (Sandbox Code Playgroud)
我做了演示,演示了如何做到这一点:

该演示基于此处描述的想法以及内部data选项以未修改的形式保存输入数据的事实.因此,您无需创建一些隐藏列来保存与该行关联的其他信息.有关详细信息,请参阅答案和此答案.我严格建议你另外idPrefix在subgrids中使用选项.有关详细信息,请参阅答案
下面是我在演示中使用的代码:
var myData = {
_id: "509403957ae7d3929edcb812",
name: "MYBOOK",
layout: {
chapters: [
{
name: "myfirstchapter",
sequence: 1,
title: "My First Chapter",
files: [
{ filetype: "tex", name: "myfirstfile" },
{ filetype: "tmpl", name: "myfileb" }
]
},
{
name: "mysecondchapter",
sequence: 2,
title: "My Second Chapter",
files: [
{ filetype: "tex", name: "myintro" },
{ filetype: "tex", name: "myfilec" }
]
}
]
}
},
$grid = $("#list");
$grid.jqGrid({
datatype: "local",
data: myData.layout.chapters,
colNames: ["Sequence", "Name", "Title"],
colModel: [
{name: "sequence", width: 65, key: true },
{name: "name", width: 150 },
{name: "title", width: 150}
],
rowNum: 10,
rowList: [5, 10, 20],
pager: "#pager",
gridview: true,
ignoreCase: true,
rownumbers: true,
sortname: "sequence",
viewrecords: true,
height: "100%",
subGrid: true,
subGridRowExpanded: function (subgridId, rowid) {
var subgridTableId = subgridId + "_t";
$("#" + subgridId).html("<table id='" + subgridTableId + "'></table>");
$("#" + subgridTableId).jqGrid({
datatype: "local",
data: $(this).jqGrid("getLocalRow", rowid).files,
colNames: ["Name", "Filetype"],
colModel: [
{name: "name", width: 130, key: true},
{name: "filetype", width: 130}
],
height: "100%",
rowNum: 10,
sortname: "name",
idPrefix: "s_" + rowid + "_"
});
}
});
$grid.jqGrid("navGrid", "#pager", {add: false, edit: false, del: false});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我修复了您发布的数据中的一些语法错误.
| 归档时间: |
|
| 查看次数: |
10284 次 |
| 最近记录: |