【问题标题】:jqGrid display default "loading" message when updating a table / on custom updatejqGrid 在更新表/自定义更新时显示默认“加载”消息
【发布时间】:2011-02-06 13:31:27
【问题描述】:

我有一个案例,我需要根据用户选择的一些搜索条件来更新 jqgrid。我可以让数据更新,但我希望在获取新数据时显示加载消息。有人可以告诉我如何让它工作吗?

当前代码如下

var ob_gridContents = $.ajax( { url : '/DisplayObAnalysisResults.action?getCustomAnalysisResults', data : "portfolioCategory="+ $('#portfolioCategory').val() +"&subPortfolioCategory="+ $('#subPortfolioCategory').val() + "&subportfolio=" + $('#subportfolio').val(), async : false }).responseText; var ob_Grid = jQuery('#OBGrid')[0]; var ob_GridJsonContents = eval('(' + ob_gridContents + ')'); $('#ob_Grid').trigger("reloadGrid"); ob_Grid.addJSONData(ob_GridJsonContents); ob_Grid = null; ob_GridJsonContents = null; }

【问题讨论】:

    标签: jqgrid loading message


    【解决方案1】:

    如果我正确理解你的意思,我可以推荐你使用 jQuery blockUI 插件 (http://malsup.com/jquery/block/)。然后你不需要更多地使用 $.ajax 函数的 "async : false" 参数并执行以下操作:

    var WaitMsg = function () {
        jQuery('#main').block({ message: '<h1>Die Daten werden vom Server geladen...</h1>' });
    };
    var StopWaiting = function () {
        jQuery('#main').unblock();
    };
    
    WaitMsg();
    $.ajax({url : '/DisplayObAnalysisResults.action?getCustomAnalysisResults',
            data: jQuery.param({portfolioCategory: $('#portfolioCategory').val(),
                                subPortfolioCategory: $('#subPortfolioCategory').val(),
                                subportfolio: $('#subportfolio').val()}),
            complete: function (data, status) {
                if (status === "success" || status === "notmodified") {
                    var ob_GridJsonContents = jQuery.parseJSON(data.responseText);
                 ...
                }
                StopWaiting();
            },
            error: function (xhr, st, err) {
                // display error information
                StopWaiting();
            }
    });
    

    我建议你不要像这样构建参数

    "portfolioCategory="+ $('#portfolioCategory').val() +"&subPortfolioCategory="+ $('#subPortfolioCategory').val() + "&subportfolio=" + $('#subportfolio').val()

    因为如果.val()返回的数据有一些特殊字符,你可能会收到编码问题。在这种情况下,您可以使用 JavaScript 函数 encodeURIComponent(如 encodeURIComponent($('#portfolioCategory').val())) 或 jQuery.param 函数,如果你构造一个类似 p1=val1&p2=val2&...pN=valN 的字符串。

    最好的问候
    奥列格

    【讨论】:

    • 感谢 Oleg,我现在使用的方法是重置 url 并使用触发方法重新加载。我会根据你的建议添加编码调用。
    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多