jqGrid отображает сообщение о загрузке по умолчанию при обновлении таблицы / при пользовательском обновлении - PullRequest
2 голосов
/ 10 апреля 2010

У меня есть случай, когда мне нужно обновить 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;
}

1 Ответ

2 голосов
/ 15 апреля 2010

Если я правильно понимаю, что вы будете, я могу порекомендовать вам использовать плагин jQuery blockUI (http://malsup.com/jquery/block/). Тогда вам не нужно больше использовать параметр «async: false» функции $ .ajax и делать что-то как следующее:

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 .

С наилучшими пожеланиями
Олег

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...