无法用新值重新加载JGrid
Unable to reload the JGrid with the new value
我使用JQuery和JGrid与java。我有一个网格
<script>
jQuery("#table1").jqGrid({
..............
............
});
我有另一个网格
function abc {
var id = firstgridid;
if(number>0) {
// working but with the old value
$("#table2").jqGrid('setGridParam', { url: 'JGridA?action=abc&hidden='+id,page:1}).trigger("reloadGrid");
JQuery("#table2").jqGrid({
url:'JGridServlet?action=comm&hidden='+id,
.............
});
}
</script>
在第二个网格中,我将第一个网格中选择的id值作为url传递。每次我从第一个网格中选择一行,点击"显示详细信息"按钮后,函数abc()将被执行,应该传递id,并在第二个网格中显示相应的行(id信息)。
我能够获得所选行的id,并且能够重新加载第二个网格,但是与第二个网格相关的查询正在获取第一次选择的id。但是我需要当前选择的id。
请帮…
在abc
函数的代码中至少可以看到两个重要的问题。
第一个是setGridParam
在 JQuery("#table2").jqGrid({...});
之前的使用,其中创建网格。不能在<table>
上使用setGridParam
。像JQuery("#table2").jqGrid({...});
这样的调用转换了相对复杂结构中的空<table id="table2"></table>
元素,这些元素将用于显示网格。因此,您应该首先创建网格(将空<table>
转换为网格),然后才能使用setGridParam
或.trigger("reloadGrid")
来刷新网格内容。
JQuery("#table2").jqGrid({...});
在函数abc
内部的使用,您多次调用。如前所述,调用JQuery("#table2").jqGrid({...});
将空的<table>
转换为网格。因此,只能调用一次。对于第二次加载网格,您应该使用setGridParam
和.trigger("reloadGrid")
来刷新网格内容。
UPDATED:如果你想实现master/details场景,你可以这样做:
// 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
。所以如果你要刷新主网格,细节网格将是空的,直到主网格中的行被选中。
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- jQuery Lazy加载动画滚动
- Html页面上的多个Base64图像和平滑加载
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使该数据在所有元素中加载
- Chrome扩展没有't在重新加载之前考虑期权价值
- 使用javascript在Flash中加载外部图像
- Ajax文件加载和<输入>文件加载
- 使用javascript函数在页面初始化后加载jquery
- 无法用新值重新加载JGrid