【问题标题】:JqGrid setGridParam is not working to assign datatype to jsonJqG​​rid setGridParam 无法将数据类型分配给 json
【发布时间】:2019-06-06 14:40:04
【问题描述】:

在按钮单击功能中使用 SetGridParam 不会将网格的数据类型更改为 json

我最初不想加载网格,只需单击一个按钮即可加载网格数据。为此,我将数据类型设置为“本地”,并使用 SetGridParam 将数据类型更改为 json。但这不起作用,我无法弄清楚。请帮帮我。

 $('#jQGrid').jqGrid({
        mtype: "POST",
        datatype:"local",
        url: "EmployeeDashBoard.aspx/GetEmpData",
        ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },

        colNames: ['Employee', 'Age', 'Salary'],
        colModel: [

                    { name: "Employee", width: 70, index: 'Employee', sortable: false, resizable: false },
                    { name: "Age", width: 70, index: 'Age', sortable: false, resizable: false},
                    { name: "Salary", width: 70, index: 'Salary', sortable: false, resizable: false },


        ],
        serializeGridData: function (postData) {
            return JSON.stringify(postData);
        },
       beforeRequest: function () {
            var postData = $('#jQGrid').jqGrid('getGridParam', "postData");
            $.extend(postData, { "objFNFData": objFNFData });

        },

        jsonReader: {
            repeatitems: false,
            root: function (obj) {
                return obj.d.FNFDataList;
            },
            total: function (obj) {
                return obj.d.Total;
            },
            records: function (obj) {
                return obj.d.Records
            }

        },

        loadComplete: function (obj) {

            if ($('#jQGrid').jqGrid.getGridParam('datatype') === "json") {
                $(".ui-jqgrid-titlebar").hide();


                if (obj.d.Total === 0) {
                    $(this).hide();
                    emptyMsgDiv.appendTo("#gview_jQGrid > .ui-jqgrid-bdiv");
                    $("[id$=btnExport]").hide();
                } else {
                    $(this).show();                        
                    $("#btnExport").attr("onclick", "openDownload()");
                    $("[id$=btnExport]").show();

                }
            }

        },

        rowNum: 20,
        shrinkToFit: true,
        sortable: false,            
        viewrecords: true,
        rowList: [10, 20, 30, 50, 100],
        pager: jQuery("#pager"),
        height: 'auto',
        caption: 'Employee Details',
        search: true
    });

     $("#btnSearch").click(function () {
        $("#jQGrid").jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid')
    });

【问题讨论】:

  • 您的var postData = ... 逻辑位置错误,将导致语法错误。同样,您似乎在该块之后还有一个额外的},这也是一个问题。
  • 请建议应该在哪里包含该 postData 逻辑
  • 我不知道,因为不清楚你期望它做什么
  • 我已经更新了代码。最初我将数据类型定义为本地并尝试在 $("#btnSearch").click 函数中将其更改为 json。但数据类型不会更改为 json
  • 你如何确定数据类型没有改变?

标签: jquery jqgrid jqgrid-asp.net


【解决方案1】:

我认为您在 loadComplete 中有一些不正确的代码。为了使它起作用,它应该如下所示:

   loadComplete: function (obj) {

        if ($('#jQGrid').jqGrid('getGridParam','datatype') === "json") {
            $(".ui-jqgrid-titlebar").hide();


            if (obj.d.Total === 0) {
                $(this).hide();
                emptyMsgDiv.appendTo("#gview_jQGrid > .ui-jqgrid-bdiv");
                $("[id$=btnExport]").hide();
            } else {
                $(this).show();                        
                $("#btnExport").attr("onclick", "openDownload()");
                $("[id$=btnExport]").show();

            }
        }

    }

即替换

if ($('#jQGrid').jqGrid.getGridParam('datatype') === "json") {

if ($('#jQGrid').jqGrid('getGridParam','datatype') === "json") {

希望这会有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多