Прежде всего в вашем коде вы определяете переменные myTradeOfferGame
и acceptedTradeOfferGame
(внутри else if(sel==2)
и else if(sel==3)
), но используете myTradeOffer
и acceptedTradeOffer
. Похоже на ошибки.
Второе: URL-адреса внутри else if(sel==2)
и else if(sel==3)
выглядят по-другому, как в первой таблице: URL-адреса являются статическими, так почему нужно каждый раз устанавливать это значение? Возможно, вы хотите добавить во все URL часть с $("#srchoptions").val()
? Вы должны решить эту проблему самостоятельно.
В вашем коде видно, что вы используете $.ajaxSetup
, который изменяет глобальные настройки $.ajax
. Если вы измените это 3 раза, будет сохранен только последний. Если при одном обновлении работает только одна из трех настроек, то, тем не менее, $.ajaxSetup
не лучший способ. jqGrid имеет параметр ajaxGridOptions
, который устанавливает параметры $.ajax
для таблицы (см. Установка типа содержимого запросов, выполняемых jQuery jqGrid ).
Кроме того, jqGrid (каждый экземпляр) имеет параметр postData
, который будет перенаправлен на $.ajax
как параметр data
. Таким образом, вы можете использовать этот параметр в определении jqGrid. Если вы хотите, чтобы данные, которые вы указали как postData
, были перезагружены в течение каждые trigger('reloadGrid')
, вы можете просто определить postData
, используя функцию. Поведение по умолчанию $.ajax
заключается в проверке, является ли поле параметра data
функцией, если это так, $.ajax
вызывает эту функцию, чтобы получить значение. Таким образом, ваш код может выглядеть следующим образом:
// definition of 3 jqGrids
jQuery("#offerstable").jqGrid ({
postData: {'gameId': function() { return $("#games").val(); } },
//...
});
jQuery("#myOffersTable").jqGrid ({
postData: {'gameId': function() { return $("#my").val(); } },
//...
});
jQuery("#myOffersTable").jqGrid ({
postData: {'gameId': function() { return $("#accepted").val(); } },
//...
});
if(sel==1)
{
jQuery("#offerstable")
.jqGrid('setGridParam',
{url:"offers.action?q=1&srch="+encodeURIComponent($("#srchoptions").val()),
page:1})
.trigger('reloadGrid');
} else //...
// ...
Кстати, если вы используете HTTP GET для запроса данных, параметры из параметра data
(postData
) будут просто добавлены к URL (с размещением '?' И '&' как каждый делает это обычно).
Окончательный код может выглядеть примерно так:
// definition of 3 jqGrids
jQuery("#offerstable").jqGrid ({
url:"offers.action",
postData: {'q': 1,
'gameId': function() { return $("#games").val(); },
'srch': function() { return $("#srchoptions").val(); },
//...
});
jQuery("#myOffersTable").jqGrid ({
url:"offers.action",
postData: {'q': 1,
'gameId': function() { return $("#my").val(); } },
//...
});
jQuery("#myOffersTable").jqGrid ({
url:"offers.action",
postData: {'q': 1,
'gameId': function() { return $("#accepted").val(); } },
//...
});
и
if(sel==1) {
jQuery("#offerstable").jqGrid('setGridParam',{page:1}).trigger('reloadGrid');
} else if (sel==2) {
jQuery("#myOffersTable").jqGrid('setGridParam',{page:1}).trigger('reloadGrid');
} else if (sel==3) {
jQuery("#acceptedtable").jqGrid('setGridParam',{page:1}).trigger('reloadGrid');
}