我有一个 JQuery
网格,它是在基于某些下拉选择的按钮单击时填充的。
第一次单击按钮时网格就会加载数据。但在随后的点击中,网格不会根据更改的下拉选择重新加载。
第一次单击按钮时加载的网格数据将持续存在,直到并且除非我重新加载页面。
我在网上查了一些解决方案,例如
- 使用
$("#tblJQGrid").trigger("reloadGrid");
用于除首次点击之外的后续点击 cache:false
属性。
但是它们都不起作用。
这是我的jqgrid
代码供引用
function BindGridData()
{
$("#tblJQGrid").jqGrid(
{url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"+ "?Parameters=" + Params + "",
datatype: "json",
//data: { "Parameters": Params },
async: false,
mtype: 'GET',
cache: false,
colNames: ['Id','GeoGraphy', 'Completed', 'InProgress'],
colModel: [
{ name: 'Id', index: 'Id', width: 20, stype: 'text',hidden:true },
{ name: 'Geography', index: 'Geography', width: 150 },
{ name: 'Completed', index: 'Completed', width: 150 },
{ name: 'InProgress', index: 'InProgress', width: 150 },
],
pager:'#pager',
jsonReader: {cell:""},
rowNum: 10,
sortorder: "desc",
sortname: 'Id',
viewrecords: true,
caption: "Survey Status:Summary",
scrollOffset: 0});
}
这是我初始化按钮单击事件的方式
$(document).ready(function () {
var firstClick=true;
$("#btnSubmit").click(function(){
btnSubmitClick();
debugger
if(!firstClick)
{
$("#tblJQGrid").trigger("reloadGrid");
}
firstClick=false;
BindGridData();
});
});
有人可以告诉我我做错了什么吗?
最佳答案
看来代码$("#tblJQGrid").jqGrid({...});
有什么典型的误解做。它是创建网格。这意味着 in 转换空表 <table id="btnSubmit"></table>
在div和table结构相对复杂的情况下。请参阅here 。了解了这一点后应该清楚的是第二次调用BindGridData
没有意义,因为table#btnSubmit
是不是更空了。 jqGrid 对其进行了测试,但什么也不做。因此,您当前的代码只会触发 reloadGrid
与旧 URL(请参阅 Params
)。
要解决此问题,您有两个主要选择:
- 用法
url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"
和postData
属性定义为函数(请参阅 the old answer ) - 点击时重新创建网格而不是触发
reloadGrid
。您可以调用GridUnload
调用BindGridData
之前的方法(参见 the old answer ) .
关于javascript - Jquery网格仅在第一次单击时加载,并且在后续单击时不重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40676841/