我有一个JQuery
网格,根据某些下拉选项在按钮点击时填充。
第一次按下按钮时,网格会加载数据。但是在随后的点击中,网格不会根据更改的下拉选项重新加载。
第一个按钮点击加载的网格数据一直存在,除非我重新加载页面。
我已经在网上找到了一些解决方案,例如
$("#tblJQGrid").trigger("reloadGrid");
进行后续点击(第一次点击除外)cache:false
property。但他们都没有工作。
以下是我的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();
});
});
有人能告诉我我做错了吗?
答案 0 :(得分:0)
似乎存在典型的误解代码$("#tblJQGrid").jqGrid({...});
的作用。它是创建网格。这意味着在相对复杂的div和表结构中转换空表<table id="btnSubmit"></table>
。见here。在理解了BindGridData
的第二次调用之后应该很清楚,因为table#btnSubmit
并不是空的。 jqGrid测试它,什么也不做。因此,您当前的代码只会使用旧的网址触发reloadGrid
(请参阅Params
)。
要解决此问题,您有两个主要选项:
url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"
和postData
,其属性定义为函数(请参阅the old answer)reloadGrid
。您可以在致电GridUnload
之前致电BindGridData
方法(请参阅the old answer)。