jqGrid отображает сообщение о загрузке по умолчанию при обновлении таблицы / при пользовательском обновлении
У меня есть случай, когда мне нужно обновить 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 ответ
Если я правильно понимаю, что вы будете, я могу порекомендовать вам использовать плагин 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.
С наилучшими пожеланиями
Олег