Jquery 网格仅在第一次点击时加载,并且不会在后续点击时重新加载
Jquery grid loading only on 1st click and not reloading on subsequent clicks
我有一个 JQuery
网格,它是根据某些下拉选项单击按钮时填充的。
网格在第一次单击按钮时加载数据。但是在随后的点击中,网格不会根据更改的下拉选择重新加载。
第一次单击按钮时加载的网格数据会一直存在,除非我重新加载页面。
网上查了一些解决方法,比如
- 使用
$("#tblJQGrid").trigger("reloadGrid");
除了第一次点击之外的后续点击
cache:false
属性.
但其中 none 有效。
这是我的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({...});
的作用存在典型的误解。 创建 网格。意思是在比较复杂的div和table结构中转换空的table<table id="btnSubmit"></table>
。参见 here。明白了之后应该清楚BindGridData
的第二次调用是没有意义的,因为table#btnSubmit
不再是空的。 jqGrid 对其进行测试,但什么也不做。因此,您当前的代码仅触发 reloadGrid
和 旧的 URL(参见 Params
)。
要解决此问题,您有两个主要选择:
- 使用
url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"
和 postData
,属性定义为 函数(参见 the old answer)
- 点击 时重新创建网格,而不是 触发
reloadGrid
。您可以在调用 BindGridData
. 之前调用 GridUnload
方法(参见 the old answer)
我有一个 JQuery
网格,它是根据某些下拉选项单击按钮时填充的。
网格在第一次单击按钮时加载数据。但是在随后的点击中,网格不会根据更改的下拉选择重新加载。
第一次单击按钮时加载的网格数据会一直存在,除非我重新加载页面。
网上查了一些解决方法,比如
- 使用
$("#tblJQGrid").trigger("reloadGrid");
除了第一次点击之外的后续点击 cache:false
属性.
但其中 none 有效。
这是我的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({...});
的作用存在典型的误解。 创建 网格。意思是在比较复杂的div和table结构中转换空的table<table id="btnSubmit"></table>
。参见 here。明白了之后应该清楚BindGridData
的第二次调用是没有意义的,因为table#btnSubmit
不再是空的。 jqGrid 对其进行测试,但什么也不做。因此,您当前的代码仅触发 reloadGrid
和 旧的 URL(参见 Params
)。
要解决此问题,您有两个主要选择:
- 使用
url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"
和postData
,属性定义为 函数(参见 the old answer) - 点击 时重新创建网格,而不是 触发
reloadGrid
。您可以在调用BindGridData
. 之前调用
GridUnload
方法(参见 the old answer)