JqG​​rid setGridParam无法将数据类型分配给json

时间:2019-06-06 14:40:04

标签: jquery jqgrid jqgrid-asp.net

在按钮单击功能中使用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')
    });

1 个答案:

答案 0 :(得分:0)

我认为您在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") {

希望这会有所帮助