jQuery jQgrid 的 gridComplete 事件正在触发但 loadComplete 没有触发..... 为什么?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18161220/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 21:08:31  来源:igfitidea点击:

jQgrid's gridComplete event is firing but loadComplete is not firing..... why?

jqueryjqgridjqgrid-asp.net

提问by Rahul

In my ASP.NET project I am integrating jQgrid to show data. My Problem is loadComplete event is not firing. My entire jQgrid code is as follows:

在我的 ASP.NET 项目中,我正在集成 jQgrid 来显示数据。我的问题是 loadComplete 事件没有触发。我的整个 jQgrid 代码如下:

function getData(jqGridParams) 
    {
        var sortcookieval = $.cookie("ItemGridSortInfo");
        var sname = "";
        var sorder = "";
        if (sortcookieval != null) 
        {
            var sortInfo = sortInfoFromCookie("ItemGridSortInfo");
            sname = sortInfo.sortname;
            sorder = sortInfo.sortorder;
        }
        else 
        {
            sname = "";
            sorder = "asc";
        }
        var params = new Object();
        params.pageIndex = jqGridParams.page;
        params.pageSize = jqGridParams.rows;
        params.sortIndex = sname; //jqGridParams.sidx;  
        params.sortDirection = sorder;  //jqGridParams.sord;
        params._search = jqGridParams._search;
        if (jqGridParams.filters === undefined)
            params.filters = null;
        else
            params.filters = jqGridParams.filters;

        $.ajax({
            url: 'WSAjax.asmx/GetDataForGrid',
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: JSON.stringify(params),
            success: function (data, textStatus) 
            {
                if (textStatus == "success") 
                {
                    var grid = $("#ItemGrid")[0];
                    grid.addJSONData(data.d);
                }
            },
            error: function (jqXHR, textStatus, errorThrown) 
            {
                alert(textStatus, errorThrown);
            }
        });
    }

    function saveSortInfoToCookie(name, grid)
    {
        var sortInfo = new Object();
        sortInfo.sortname = grid.jqGrid('getGridParam', 'sortname');
        sortInfo.sortorder = grid.jqGrid('getGridParam', 'sortorder');
        //$('#Hidden').val(JSON.stringify(gridInfo));
        //alert($('#Hidden').val());
        $.cookie(name, JSON.stringify(sortInfo), {expires: 5});
    }

    function sortInfoFromCookie(name) 
    {
        var c = $.cookie(name);
        if (c === null)
            return;
        return $.parseJSON(c);
    }

    $(document).ready(function () {
        var oItemGrid = $("#ItemGrid");
        oItemGrid.jqGrid({
            datatype:
                function (jqGridParams) {
                    getData(jqGridParams);
                },
            colNames: ['Type', 'Name', 'Desc'],
            colModel: [
                { name: 'Type', index: 'Type', width: 40 },
                { name: 'Name', index: 'Name', width: 40 },
                { name: 'Desc', index: 'Desc', width: 40, sortable: false}],
            autowidth: true,
            height: 'auto',
            rowNum: 10,
            rowList: [10, 20, 30, 40],
            viewrecords: true,
            gridview: true,
            autoencode: true,
            ignoreCase: true,
            caption: 'Remember Sorting and Filtering Functionality',
            pager: '#IGPager',
            onSortCol: function (colModel, colName, sortOrder) {
                saveSortInfoToCookie("ItemGridSortInfo", $("#ItemGrid"));
                var storeval = $.cookie("ItemGridSortInfo");
                alert("Saving sort info in cookie: " + storeval);
            },
            gridComplete: function () {
                var prvData = $.cookie("ItemGridSortInfo");
                alert("Reading saved sort info from cookie : " + prvData);

                var pageno = $.cookie("ItemGridPageInfo");
                alert("Reading saved page no. from cookie:" + pageno);
            },
            loadComplete: function (data) {
                if(data != null)
                {
                    alert("Inside loadComplete..");
                }
            },
            //loadonce: true
        }).jqGrid('navGrid', '#IGPager', { edit: false, add: false, del: false }, {}, {}, {}, {}, {});
    });

and if possible please tell me difference between gridComplete and loadComplete according to my scenario....

如果可能的话,请根据我的情况告诉我 gridComplete 和 loadComplete 之间的区别......

回答by zs2020

The problem is you set datatypeas a function(custom defined function for retrieving data) instead of local. If you use a function, then you should call loadCompletein your own implementation.

问题是您设置datatype函数(用于检索数据的自定义定义函数)而不是local. 如果你使用一个函数,那么你应该调用loadComplete你自己的实现。

So if you change it to other type like local, the loadCompletewill be handled automatically by jqGrid. I created a demo for you.

因此,如果您将其更改为其他类型,如本地,loadComplete将由 jqGrid 自动处理。我为你创建了一个演示。

Demo

Demo