javascript - Jquery网格仅在第一次单击时加载,并且在后续单击时不重新加载

标签 javascript jquery asp.net-mvc-4 jqgrid asp.net-ajax

我有一个 JQuery 网格,它是在基于某些下拉选择的按钮单击时填充的。

第一次单击按钮时网格就会加载数据。但在随后的点击中,网格不会根据更改的下拉选择重新加载。

第一次单击按钮时加载的网格数据将持续存在,直到并且除非我重新加载页面。

我在网上查了一些解决方案,例如

  1. 使用 $("#tblJQGrid").trigger("reloadGrid");用于除首次点击之外的后续点击
  2. 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 )。

要解决此问题,您有两个主要选择:

  1. 用法url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"postData属性定义为函数(请参阅 the old answer )
  2. 点击时重新创建网格而不是触发 reloadGrid 。您可以调用GridUnload调用 BindGridData 之前的方法(参见 the old answer ) .

关于javascript - Jquery网格仅在第一次单击时加载,并且在后续单击时不重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40676841/

相关文章:

javascript - JQuery 无限滚动帮助 - 将变量传递到第二页

javascript - Flot JS 将目标变成菱形

asp.net-mvc - 首次登录本地站点时出现防伪造 cookie token 错误,第二次尝试时就可以了

javascript - 如何通过 jQuery 将文件 POST 到 nodejs connect-busboy

javascript - 我可以使用父函数的参数来命名其子函数吗?

jquery - 在 div 覆盖中嵌入 javascript 代码的问题

jQuery:如果在其他地方检测到单击,则隐藏弹出窗口

javascript - 通过查找 id-javascript 更改 href

c# - 如何防止编辑url地址?

c# - ASP.NET 4.5 或替代框架中的 OpenIdDict?