Я понял это, просмотрев исходный код, и, поскольку я не могу найти функцию, документированную в вики или где-либо еще, я отвечу на свой вопрос. У jqGrid есть способ создания шаблонов поиска по умолчанию, и это довольно полезно. Надеюсь, мое объяснение будет полезно для кого-то еще.
При создании части searchGrid в jqGrid $('#gridDiv').jqGrid('searchGrid', options);
(или в разделе параметров searchGrid при создании части navGrid $('#gridDiv').jqGrid('navGrid', '#navDiv', {}, {}, {}, {}, searchOptions);
) есть два параметра, которые нам нужны, tmplNames и tmplFilters.
tmplNames - это просто массив строк с именами шаблонов. Они появятся как текст в поле выбора шаблона, которое будет отображаться. Что-то вроде ["Bob's Template", "Joe's Template"]
.
tmplFilters также является массивом строк, но эти строки являются строкой в кодировке JSON, которую jqGrid отправляет сценарию php при поиске чего-либо. (tmplFilters также может работать как массив самих объектов, но я не пробовал) Так что-то вроде этого.
{
"groupOp":"AND",
"rules":
[
{"field":"comnumber","op":"ge","data":"19000"},
{"field":"expStatus.expStatID","op":"eq","data":"4"}
]
}
Так что все это на самом деле довольно легко, за исключением того, что это все еще не охватывает установку шаблона по умолчанию. Это хорошо только для установки дополнительных шаблонов на выбор. jqGrid имеет предопределенный шаблон по умолчанию, который появляется при первом открытии поиска. Чтобы изменить это, после создания jqGrid вам нужно использовать setGridParam и изменить свойство postdata
$('#jqGrid').setGridParam({
postData: {
filters: defaultFilter
}
});
где defaultFilter - это тот же тип строки запроса JSON, что и раньше. Кроме того, если нажать кнопку «сброс», этот шаблон по умолчанию исчезнет, поэтому вам нужно будет установить его снова, когда это произойдет, что достаточно просто сделать, добавив функцию onReset к начальному вызову jqGrid:
onReset: function () {
$('#jqGrid').setGridParam({
postData: {
filters: defaultFilter
}
});
}
И это все! При некотором использовании AJAX и некоторых новых кнопок я также мог читать шаблоны из локального файла, а не определять их в javascript, а также мог принимать текущий запрос и создавать / перезаписывать шаблоны в файле. Тогда они стали действительно полезными.