Вместо установки URL вы должны попробовать что-то вроде этого.
Я использую это для пользовательских выпадающих меню, которые добавляю в сетку. По сути, я условно добавляю 2 выпадающих меню в верхнюю часть панели инструментов сетки для быстрого поиска.
var toolbarspan = $("<span>");
if (tblDef.State != null) {
$("<label>").attr("for", "selectState").append(" State: ").appendTo("#t_colch")
$("<select>").attr("id", "selectState")
.append($("<option>").attr({selected: true, value: "O"}).append("Open"))
.append($("<option>").attr("value", "C").append("Closed"))
.append($("<option>").attr("value", "B").append("Both"))
.change(selChange)
.appendTo("#t_colch")
}
$("<label>").attr("for", "selectInActive").append(" InActive: ").appendTo("#t_colch")
$("<select>").attr("id", "selectInActive")
.append($("<option>").attr({selected: true, value: "0"}).append("Active"))
.append($("<option>").attr("value", "1").append("InActive"))
.append($("<option>").attr("value", "B").append("Both"))
.change(selChange)
.appendTo("#t_colch");
}
Если вы хотите, чтобы ваши 2 поля также находились на верхней панели инструментов, вам необходимо добавить следующие параметры таблицы.
toolbar: [true, "top"],
Сначала добавьте это в определение таблицы.
beforeRequest: myBeforeRequest(this),
Затем определите свою функцию myBeforeRequest примерно так:
function myBeforeRequest(grid) {
$(grid).jqGrid("setPostDataItem", "InActive", 0);
var chkVal="";
if ($("#selectInActive").length > 0)
{
chkVal = $("#selectInActive").val();
if (chkVal == "B") $(grid).jqGrid("removePostDataItem", "InActive");
else $(grid).jqGrid("setPostDataItem", "InActive", chkVal);
}
if (tblDef.State != null) {
$(grid).jqGrid("setPostDataItem", "StateCol", tblDef.State);
$(grid).jqGrid("setPostDataItem", "State", "O");
if($("#selectState").length > 0)
{
chkVal = $("#selectState").val();
if (chkVal == "B") $(grid).jqGrid("removePostDataItem", "State");
else $(grid).jqGrid("setPostDataItem", "State", chkVal);
}
}
}
Вы можете сделать то же самое для ваших 2 полей поиска, даже удалив их из параметров, если они не заполнены. Это приведет к тому же URL, который вы сейчас редактируете вручную.
GetRecords.aspx? InActive = 0 & State = O & StateCol = 9 - это то, что я сейчас получаю на сервере.