【问题标题】:Jquery grid loading only on 1st click and not reloading on subsequent clicksJquery 网格仅在第一次点击时加载,在后续点击时不重新加载
【发布时间】:2016-11-18 12:12:08
【问题描述】:

我有一个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();
        });
});

谁能告诉我我做错了什么?

【问题讨论】:

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


【解决方案1】:

似乎存在典型的误解代码$("#tblJQGrid").jqGrid({...}); 的作用。这是创建网格。就是把空表<table id="btnSubmit"></table>转换成相对复杂的div和表结构。见here。明白之后应该清楚BindGridData的第二次调用是没有意义的,因为table#btnSubmit不是更空。 jqGrid 对其进行测试,但什么也不做。因此,您当前的代码只需使用 旧的 URL 触发 reloadGrid(参见 Params)。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2012-05-22
    • 2018-01-25
    • 1970-01-01
    • 2021-11-03
    • 2018-01-30
    相关资源
    最近更新 更多