Нет варианта, который может напрямую делать то, что вам нужно.Более того, если вы спрятали операнд ADD / OR из диалогового окна поиска при инициализации диалога (например, внутри beforeShowSearch обработчика событий) с $('select.opsel').hide()
, элемент select будет скрыт только в начале.После того, как пользователь нажмет любую кнопку, диалоговое окно будет перекрашено без вызова какого-либо обработчика событий, и элемент select снова будет виден.
Поэтому я предлагаю решить проблему с перезаписью метода reDraw диалогового окна фильтра.Код, который делает это, может выглядеть следующим образом:
jQuery("#grilla").jqGrid("navGrid","#paginador",
{del: false, add: false, edit: false}, {}, {}, {},
{
multipleSearch: true,
beforeShowSearch: function($form) {
var searchDialog = $form[0],
oldrReDraw = searchDialog.reDraw, // save the original reDraw method
doWhatWeNeed = function () {
// hide the AND/OR operation selection
$('select.opsel', searchDialog).hide();
setTimeout(function () {
// set fucus in the last input field
$('input[type="text"]:last', searchDialog).focus();
}, 50);
}
searchDialog.reDraw = function () {
oldrReDraw.call(searchDialog); // call the original reDraw method
doWhatWeNeed();
}
doWhatWeNeed();
}
}
);
На демоверсии видно, что путь действительно работает.
ОБНОВЛЕНО : послеНаписание ответа я опубликовал некоторые предложения в trirand по улучшению jqGrid.Теперь jqGrid имеет много функций, которые упрощают вышеуказанную работу.Например, существует afterRedraw
обратный вызов, который можно использовать напрямую.Таким образом, код из ответа будет выглядеть так:
grid.jqGrid("navGrid", "#pager",
{add: false, edit: false, del: false}, {}, {}, {},
{
multipleSearch: true,
afterRedraw: function (p) {
var $form = $(this);
$form.find("select.opsel").hide();
setTimeout(function () {
// set fucus in the last input field
$form.find('input[type="text"]:last').focus();
}, 50);
$form.find("input.add-rule,input.delete-rule").button();
}
}
);
См. Модифицированную демонстрацию здесь :
Я добавил еще одну строкув коде afterRedraw
$form.find("input.add-rule,input.delete-rule").button();
только для улучшения внешнего вида кнопок в диалоге поиска.Я предложил сделать такие настройки по умолчанию в jqGrid, но это не было принято trirand.В любом случае каждый, кто включает jQuery UI, может добавить такую строку в afterRedraw
, чтобы сделать кнопки плоскими.