abc
在函数代码中至少可以看到两个重要的问题。
第一个是使用setGridParam
before JQuery("#table2").jqGrid({...});
which创建网格。你不能setGridParam
在<table>
. 调用 like将用于显示网格的相对复杂的潜水和表格结构中的JQuery("#table2").jqGrid({...});
空元素转换。<table id="table2"></table>
因此,您应该首先创建网格(对网格隐蔽为空<table>
),然后才能使用setGridParam
或.trigger("reloadGrid")
刷新网格内容。
第二个问题是您多次JQuery("#table2").jqGrid({...});
调用的函数内部的使用。正如我之前所描述的那样,调用将空白转换为网格。所以一个人只能打一次这样的电话。对于网格的第二次加载,您应该只使用并刷新网格内容。abc
JQuery("#table2").jqGrid({...});
<table>
setGridParam
.trigger("reloadGrid")
更新:如果您想实现主/详细信息方案,您可以执行以下操作:
// create master grid
$("#table1").jqGrid({
datatype: "json",
url: "masterGridUrl",
onSelectRow: function (rowid, state) {
if (state) { // if not the same row was previously selected
// refresh detail grid
$("#table2").jqGrid("setGridParam", { datatype: "json"})
.trigger("reloadGrid", [{page: 1}]);
}
},
... // another options
});
// create details grid without filling the data initially
$("#table2").jqGrid({
datatype: "json", // we use "local" instead of "json" to have to request to the server
url: "JGridA",
postData: {
action: "abc",
hidden: function () {
// id of currently selected row
return $("#table1").jqGrid("getGridParam", "selrow");
}
},
... // other options
});
它将创建主网格“#table1”和空的详细网格“#table2”。在主网格中选择行后,将重新加载详细网格的主体。详细网格向服务器发送两个附加参数:一个静态参数action=abc
和另一个参数hidden
,其值为主网格的 rowid。
如果您navGrid
在主网格中使用,您可以添加beforeRefresh
回调(参见代码示例的答案)。在beforeRefresh
主网格的回调中,您可以调用clearGridData
细节网格。因此,如果您要刷新主网格,则在选择主网格中的行之前,详细网格将为空。