У меня есть jqGrid с navBar, который имеет search: true
и multipleSearch: true
. Я хотел бы добавить кнопку к своему UI, который автоматически добавляет дополнительное правило к поиску.
Я попытался управлять постданными для фильтра непосредственно, но значения добавили, что этот путь не обнаруживается в поисковом UI.
Я также попытался получить доступ к полю поиска непосредственно с помощью jQuery, как это:
$('#fbox_list').searchFilter().add();
$('#fbox_list .sf .data input').each(function(index) {
alert($(this).val());
});
Но, в дополнение к чувству hackish, это только работает, если пользователь уже нажал на кнопку поиска (fbox_list отделение не создается на загрузке).
Кто-либо еще занимался проблемой как это?
Ради потомков, вот хак, который я сейчас использую. Сетка имеет идентификатор список
, а пейджер имеет идентификатор пейджер
:
jQuery(document).ready(function() {
//Initialize grid.
//Initialize the navigation bar (#pager)
//Hack to force creation of the search grid.
//The filter's ID is of the form #fbox_<gridId>
jQuery('#pager .ui-icon-search').click();
jQuery('#fbox_list').searchFilter().close();
//Example button events for adding/clearing the filter.
jQuery("#btnAddFilter").click(function() {
//Adds a filter for the first column being equal to 'filterValue'.
var postFilters = jQuery("#list").jqGrid('getGridParam', 'postData').filters;
if (postFilters) {
$('#fbox_list').searchFilter().add();
}
var colModel = jQuery("#list").jqGrid('getGridParam', 'colModel');
//The index into the colModel array for the column we wish to filter.
var colNum = 0;
var col = colModel[colNum];
$('#fbox_list .sf .fields select').last().val(col.index).change();
$('#fbox_list .sf .data input').last().val('filterValue');
$('#fbox_list .sf .ops select.field' + colNum).last().val('eq').change();
$('#fbox_list').searchFilter().search();
});
jQuery("#btnClearFilter").click(function() {
$('#fbox_list').searchFilter().reset();
});
});