Нет варианта, который может напрямую делать то, что вам нужно. Более того, если бы вы скрыли операнд ADD/OR из диалога поиска при инициализации диалога (например, внутри beforeShowSearch обработчик события) с $('select.opsel').hide()
элемент select будет скрыт только в начале. После того, как пользователь нажмет любую кнопку, диалоговое окно будет перерисовано без вызова какого-либо обработчика событий, и выбранный элемент снова станет видимым.
Поэтому предлагаю решить проблему с перезаписью метода перерисовать диалогового окна фильтра. Код, который это делает, может выглядеть так
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
, чтобы кнопки стали плоскими.
person
Oleg
schedule
24.05.2011