JqGrid setGridParam не работает для назначения типа данных для JSON - PullRequest
0 голосов
/ 06 июня 2019

Тип данных сетки не меняется на json с помощью SetGridParam в функции нажатия кнопки

Я не хочу загружать сетку изначально, и только одна кнопка щелкает данные сетки, чтобы загрузить. Для этого я установил тип данных как «локальный» и изменил тип данных на json, используя SetGridParam. Но это не работает, и я не могу понять это. Пожалуйста, помогите мне.

 $('#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 голосов
/ 10 июня 2019

Я думаю, у вас есть некоторый код в 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") {

надеюсь, что это поможет

...