删除multiplesearch jqGrid中的搜索运算符(AND/OR)

Mar*_*tin 4 javascript jqgrid jqgrid-asp.net asp.net-mvc-2

我需要在搜索弹出窗口中隐藏操作符,但我无法使其工作.我尝试了这个,但两个运营商仍然出现:


jQuery("#grilla").navGrid("#paginador",
{del:false,add:false,edit:false},{},{},{},{
groupOps: [{ op: "OR", text: "any" }], multipleSearch:true});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

Ole*_*leg 5

没有选项可以直接做你需要的.此外,如果您在对话框初始化(例如在beforeShowSearch事件处理程序内部)$('select.opsel').hide()中隐藏搜索对话框中的ADD/OR操作数,则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();
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

你可以在演示中看到真正有效的方式.

更新:在写完答案之后,我向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();
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

这里查看修改过的演示:

在此输入图像描述

我在代码中添加了一行代码 afterRedraw

$form.find("input.add-rule,input.delete-rule").button();
Run Code Online (Sandbox Code Playgroud)

只是为了改善搜索对话框中按钮的外观.我建议在jqGrid中进行默认设置,但trirand不接受这个设置.无论如何,包含jQuery UI的每个人都可以添加这样的行afterRedraw以使按钮变平.