我创建了演示 https://jsfiddle.net/OlegKi/kc2537ty/1/,它演示了免费 jqGrid 与子网格的用法。它显示类似的结果
用户点击第二行的“+”图标后。
您可以在下面找到相应的代码
var mydata = [
{ id: 10, name: "John", lname: "Smith", age: 31, loc: { location: "North America", city: "Seattle", country: "US" } },
{ id: 20, name: "Ana", lname: "Maria", age: 43, loc: { location: "Europe", city: "London", country: "UK" } }
];
$("#grid").jqGrid({
data: mydata,
colModel: [
{ name: "name", label: "Name" },
{ name: "lname", label: "Last name" },
{ name: "age", label: "Age", template: "integer", align: "center" }
],
cmTemplate: { align: "center", width: 150 },
sortname: "age",
iconSet: "fontAwesome",
subGrid: true,
subGridRowExpanded: function (subgridDivId, rowid) {
var $subgrid = $("<table id='" + subgridDivId + "_t'></table>"),
subgridData = [$(this).jqGrid("getLocalRow", rowid).loc];
$("#" + subgridDivId).append($subgrid);
$subgrid.jqGrid({
idPrefix: rowid + "_",
data: subgridData,
colModel: [
{ name: "location", label: "Localtion" },
{ name: "city", label: "City" },
{ name: "country", label: "Country" }
],
cmTemplate: { align: "center" },
iconSet: "fontAwesome",
autowidth: true
});
}
});
代码的小cmets。免费 jqGrid 将输入数据的所有属性保存在data 参数中。我为每一项输入数据添加了id 属性。这不是强制性的,但如果您向网格添加更多功能可能会有所帮助。详情请见the introduction。
这些列可根据colModel 的sorttype 属性指定的数据类型进行排序。为了简化使用,一些标准类型的免费数据 jqGrid 提供了一些标准模板,这些模板是某些设置的快捷方式。我在演示中使用了template: "integer",但如果仅按整数功能排序很重要,您可以将其替换为sorttype: "integer"。
如果用户点击“+”图标来展开子网格,那么 jqGrid 会插入新行并为子网格的数据部分创建 div。您可以将上面示例中的subGridRowExpanded 替换为以下示例
subGridRowExpanded: function (subgridDivId) {
$("#" + subgridDivId).html("<em>simple subgrid data</em>");
}
理解我的意思。 div 的唯一 id 将是回调的第一个参数。可以在子网格中创建任何常见的 HTML 内容。因此可以创建空<table>,将其附加到子网格 div 和
然后将表格转换为子网格。
要访问对应于扩展行的数据项,可以使用$(this).jqGrid("getLocalRow", rowid)。返回数据是原始数据项。它有我们需要的loc 属性。为了能够将数据用作 jqGrid 的输入,我们使用元素创建数组。我主要是,要理解上面的代码是如何工作的,必须知道什么。
您可以添加.jqGrid("filterToolbar") 的调用以过滤数据或添加pager: true(或toppager: true,或两者)以拥有寻呼机并使用rowNum: 5 指定行数这页纸。在这种方式下,您可以在网格中加载相对较大的数据集,并且用户可以使用本地分页、排序和过滤。请参阅the demo,它显示了 4000 行本地网格的加载、排序和过滤性能,another one 具有 40000 行。如果一个人使用本地分页而不是一次显示所有数据,那么所有的工作都很快。