我寫的答案,你作爲一個例子,很多年前。現在,我只想給子網格數據一起與該行的主要數據的地方,如下面details
屬性:
var myGridData = [
// main grid data
{id: "10", col1: "11", col2: "12", details: [
// data for subgrid for the id=10
{id: "10", c1: "aa", c2: "ab", c3: "ac"},
{id: "20", c1: "ba", c2: "bb", c3: "bc"},
{id: "30", c1: "ca", c2: "cb", c3: "cc"}
]},
{id: "20", col1: "21", col2: "22", details: [
// data for subgrid for the id=20
{id: "10", c1: "xx", c2: "xy", c3: "xz"}
]}
];
表達$(this).jqGrid("getLocalRow", rowid)
獲取數據的項目,$(this).jqGrid("getLocalRow", rowid).details
是該行的次網格數據。因此,我們可以像the demo一樣重寫原始示例。
要與固定文本Details
列,我們可以使用簡單的格式化
formatter: function() {
return details;
}
其中details
是例如定義像
var details = "<span class='fa fa-fw fa-plus'></span> " +
"<span class='mylink'>Details</span>";
(I使用Font Awesome圖標)和mylink
類等定義
.mylink { text-decoration: underline; }
現在我們可以隱藏「子網格」列,並通過模擬隱藏單元上的click
事件來打開/關閉子網格,其中+
或-
圖標。我們收到以下完整代碼
var myGridData = [
// main grid data
{id: "10", col1: "11", col2: "12", details: [
// data for subgrid for the id=10
{id: "10", c1: "aa", c2: "ab", c3: "ac"},
{id: "20", c1: "ba", c2: "bb", c3: "bc"},
{id: "30", c1: "ca", c2: "cb", c3: "cc"}
]},
{id: "20", col1: "21", col2: "22", details: [
// data for subgrid for the id=20
{id: "10", c1: "xx", c2: "xy", c3: "xz"}
]}
],
$grid = $("#list"),
details = "<span class='fa fa-fw fa-plus'></span> " +
"<span class='mylink'>Details</span>";
$grid.jqGrid({
data: myGridData,
colModel: [
{ name: "col1", label: "Column 1" },
{ name: "col2", label: "Column 2" },
{ name: "details", label: "Details",
align: "center", width: 70,
formatter: function() {
return details;
} }
],
cmTemplate: { width: 200 },
iconSet: "fontAwesome",
autoencode: true,
sortname: "col1",
sortorder: "desc",
pager: true,
caption: "Demonstrate how to create subgrid from local data",
beforeSelectRow: function (rowid, e) {
var $self = $(this),
p = $self.jqGrid("getGridParam"),
$td = $(e.target).closest("tr.jqgrow>td"),
cm = $td.length > 0 ? p.colModel[$td[0].cellIndex] : null,
cmName = cm != null ? cm.name : null;
if (cmName === "details") {
// simulate opening the subgrid
$($td.parent()[0].cells[p.iColByName.subgrid]).click();
// inverse +/-
var $plusMinus = $td.find("span.fa");
if ($plusMinus.hasClass("fa-minus")) {
$plusMinus.removeClass("fa-minus").addClass("fa-plus");
} else {
$plusMinus.removeClass("fa-plus").addClass("fa-minus");
}
}
return true;
},
subGrid: true,
subGridRowExpanded: function (subgridDivId, rowid) {
var $subgrid = $("<table id='" + subgridDivId + "_t'></table>"),
$subgridDiv = $("#" + subgridDivId),
subgridData = $(this).jqGrid("getLocalRow", rowid).details;
$subgridDiv.closest(".subgrid-data").prev(".subgrid-cell").remove();
var colspan = $subgridDiv.closest(".subgrid-data").attr("colspan");
$subgridDiv.closest(".subgrid-data").attr("colspan", parseInt(colspan, 10) + 1);
$subgridDiv.append($subgrid);
$subgrid.jqGrid({
idPrefix: rowid + "_",
data: subgridData,
colModel: [
{ name: "c1", label: "Col 1" },
{ name: "c2", label: "Col 2" },
{ name: "c3", label: "Col 3" }
],
iconSet: "fontAwesome",
autowidth: true,
autoencode: true,
sortname: "c1"
});
$subgrid.jqGrid("setGridWidth", $subgridDiv.width() - 1);
}
}).jqGrid("hideCol", "subgrid");
相應的演示可以看到here。點擊後「+ Detailes」一會看到以下內容:
你應該張貼您的JavaScript代碼。你使用[subgrid as grid](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:subgrid_as_grid)或[legacy subgrid](http://www.trirand.com/jqgridwiki/doku .php?id = wiki:subgrid)沒有執行'subGridRowExpanded'回調?子網格作爲網格('subGridRowExpanded')爲您提供最大的靈活性。你使用哪個版本的jqGrid,從哪個fork([free jqGrid](https://github.com/free-jqgrid/jqGrid),[Guriddo jqGrid JS](http://guriddo.net/?page_id=103334)或版本<= 4.7中的舊jqGrid)?免費jqGrid允許在任何地方放置任何列。 – Oleg
我從這個答案http://stackoverflow.com/a/10178440/6144040代碼,並試圖弄清楚。它的子網格是網格,它是免費的jqGridd的最後一個版本。 – Roman
您應該一次提出一個問題。目前的問題liiks喜歡。給我寫一本關於子網格中存在的所有定製可能性的書。你應該只問一個關於一個問題的問題。 stackoverflow的目標是爲許多讀者提供共同的信息。人們搜索一些單詞,並應該能夠找到*特定問題的答案*。由於該stackoverflow有一些寫作問題的規則。規則之一:沒有交換性問題。另一個規則:你應該發佈你當前的企圖/代碼,而不是要求有人完成你的工作。 – Oleg