jqgrid 搜索弹出窗口允许删除所有过滤器!

2023-11-29

我正在 JqGrid 上尝试非常简单的搜索弹出窗口。请参阅下面的代码。有几个问题:

  • The popup comes up with AND/OR and [+] controls at the very top. See screenshot below: (from FF 4)enter image description here

  • 您可以单击 [-] 按钮删除第一个(也是唯一一个)过滤器行。不应该允许。绝不允许删除第一个过滤器行。

  • Code:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     <html>
    <head>
    <title>JQGRID Test</title>      
    <link rel="stylesheet" type="text/css" media="screen" href="http://trirand.com/blog/jqgrid/themes/redmond/jquery-ui-1.8.1.custom.css"/>
    <link rel="stylesheet" type="text/css" media="screen" href="http://trirand.com/blog/jqgrid/themes/ui.jqgrid.css"/>
    
    <script type="text/javascript" src="http://trirand.com/blog/jqgrid/js/jquery.js"></script>
    <script type="text/javascript" src="http://trirand.com/blog/jqgrid/js/jquery-ui-1.8.1.custom.min.js"></script>
    <script type="text/javascript" src="http://trirand.com/blog/jqgrid/js/i18n/grid.locale-en.js"></script>
    <script type="text/javascript" src="http://trirand.com/blog/jqgrid/js/jquery.jqGrid.min.js"></script>
    
    <script type="text/javascript">
        $(function() {
            createGrid();
        });
        function createGrid() {
            $("#jqgrid-table").jqGrid({
                colNames:['First Name', 'Last Name', 'Age', 'IQ', 'Type'],
                colModel:[
                    {name:'firstName',index:'firstName', width:100},
                    {name:'lastName',index:'lastName', width:100},
                    {name:'age', index:'age', width:50},
                    {name:'iq', index:'iq', width:50, stype:'select', searchoptions: {dataUrl:'/api/domains/putcalldomain'}},
                    {name:'type', index:'type', width: 56}
                ],
                width: 800,
                datatype:'local',                   
                pager: '#pager2',
                viewrecords: true,
                caption:"JSON Example"
            });
            var searchOptions = {
                caption: 'Filter...',
                multipleSearch:true,
                closeAfterSearch:true,
                closeAfterReset:true,
                Find: 'Filter'
            };                
            jQuery("#jqgrid-table").jqGrid('navGrid',
                                    '#pager2', 
                                    {search:true, edit:false, add:false, del:false, refresh:false}, 
                                    null, null, null, searchOptions
                                    );
            var data = getData();
            for(var i =0; i < data.length; i++) {
                var r = data[i];
                jQuery("#jqgrid-table").addRowData(r.id, r);
            }
        }
        function getData() {
            return [
                   {id:1, firstName: 'John', lastName: 'XXX',  age:'30',  iq:'200', type: 'Nice'},
                   {id:2, firstName: 'Ashley', lastName:'YYY', age:'31', iq:'210', type:'Nicer'},
                   {id:3, firstName:'Smith', lastName:'ZZZ', age:'23', iq:'90', type:'Nicest'}
                ];
       }
    
    </script>
    </head>
    <body>
      <div id='jqgrid-div'>
          <table id='jqgrid-table'></table>
         <div id="pager2"></div>
      </div>
    </body>
    </html>
    

我建议覆盖内置的reDraw过滤使用的方法(参见我的另一个答案以获得更多描述)。为此,您应该将其包含在searchOptions你使用的beforeShowSearch事件处理程序具有以下实现:

beforeShowSearch: function($form) {
    var searchDialog = $form[0],
        oldrReDraw = searchDialog.reDraw, // save the original reDraw method
        doWhatWeNeed = function() {
            $('input.delete-rule:first',searchDialog).unbind('click');

            // set fucus in the last input field
            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();
}

可以看对应的demohere.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jqgrid 搜索弹出窗口允许删除所有过滤器! 的相关文章

随机推荐

  • 如何在 webview2 中检测鼠标点击 (c#/vb.net)

    我尝试获取 html 元素的单击事件 我使用的网络浏览器 instance Nothing instance WebBrowser1 Document AddHandler instance Click AddressOf Document
  • 在代码隐藏中绑定动态创建的控件

    我动态创建了在运行时在 C 代码后面创建的弹出窗口 其中填充了 xaml 中的内容 并且很难在后面的代码中绑定它们 现在 当它被创建时 它会循环遍历 xaml 中的项目并为每个项目创建一个关联的复选框 ListView listView n
  • 是什么使

    周围似乎有某种魔力
  • 无法获取移动服务的位置信息 - 错误 400

    我尝试按照 Scotts 在此页面上对 Azure 的介绍进行操作 https www windowsazure com en us develop mobile tutorials get started 但在第 4 点 当我打算创建新的
  • Mysql 查询 - 使用 join/union 等

    我的数据库中有 4 个表 名为顾客 保存他们的个人详细信息以及他们在哪个项目中的哪个房间 payments 持有该项目的付款详细信息 projects 持有项目详细信息 和staff 持有员工登录信息 我还有 3 个页面 我从所有这些页面中
  • mysql命名约定

    我通常总是使用某种Hungarian Notation对于我的表中的字段名称 例如 Table Users u id u name u email etc Posts p id p u id p title p content etc 但最
  • Node.js Express:对 ejs 模板感到困惑

    我把我的ejs模板文件在views文件夹如 views foo html layout html 所以我配置我的 ejs 模板 app set views dirname views app engine html require ejs
  • 施工期间的虚拟功能解决方法

    我有一个具有虚函数的基类 我想在构造过程中调用该类 因为我希望为每个派生类调用该函数 我知道我无法在构造过程中调用虚拟函数 但我想不出一个优雅的 即避免重复代码 解决方案 在构造过程中调用虚函数有哪些解决方法 我想避免这种情况的原因是因为我
  • 如何在 html 页面中创建“转到邮箱”链接?

    我正在创建一个确认页面 其中显示 验证电子邮件已发送到您的邮箱 电子邮件受保护 请点击
  • 如何将 Gradle 插件(及其依赖项)加载到 build.gradle 中?

    我有一个有两个 gradle 文件的项目 build gradle and myPlugin gradle The myPlugin gradle实现了插件接口 该插件还依赖于osDetector gradle 插件 我将两个 gradle
  • open() 函数对于包含特殊字符的文件路径无法正确运行

    我正在写这个简单的代码 file input File to read fhand open file r 我要打开的文件名为 test txt 它位于子文件夹中 因此 我在请求的输入中输入的是 DB test txt 嗯 它不起作用 返回
  • 如何在php中的特定日期发送?

    我想要一张电子贺卡或类似的东西 用户可以选择电子贺卡 选择后 他必须输入一些字段 例如姓名 收件人和发件人 电子邮件 收件人和发件人 消息 我想让用户选择发送电子贺卡的日期 如何在特定日期发送电子贺卡 我需要编写一个每天运行的脚本吗 怎么做
  • 带有角度的 requirejs - 不解决嵌套路由的控制器依赖关系

    The RequireJS当路由具有多个级别时 无法正确解决依赖关系 如下所示http www example com profile view 如果我有http www example com view 控制器依赖性已正确解决 我的 bo
  • python:递归检查以确定字符串是否是回文

    我的任务是定义一个过程 is palindrome 它将字符串作为输入 并返回一个布尔值 指示输入字符串是否是回文 在这种情况下 单个字母应该返回 True 空字符串也应该返回 True 不幸的是 我没有得到预期的结果 我很感激你的帮助 我
  • 修改 PhaseListener 中的 JSF 组件树

    我有一个问题 我已经实现了一个 PhaseListener 它的目的是向树中附加有消息的任何 UIInput 组件添加一个样式类 如果没有附加任何消息 则删除该样式类 PhaseListener 在 RENDER RESPONSE 阶段运行
  • ST2 键盘映射:“expand_selection”的参数

    有谁知道如何在 Sublime Text 2 中编辑 expand selection 键盘映射 以便它只选择当前行而不是后面的换行符 默认的键盘映射是这样的 keys ctrl l command expand selection arg
  • Android:尝试 HttpURLConnection.getOutputStream() 时抛出 SocketException

    这是我的第一个 Android 程序 它是一个修改后的 hello world 我在 MAC 上的模拟器上运行它 我尝试与 NET Web 服务通信 但出现异常connection getOutputStream 我可以从模拟器访问该网站
  • scanf() 可变长度说明符

    如何使用变量来指定最大字符数scanf 应该读进去吗 例如使用printf 你可以像这样使用 define MAXVAL 5 printf Print at maximum MAXVAL chars s n MAXVAL myStringH
  • JS ES6 通过键数组过滤对象的正确方法

    我想获取一个对象数组并过滤每个对象以仅返回键与数组中的项目匹配的属性 例如 const myKeys key 1 key 3 const myArray key 1 Some Value A key 2 Some Other Value A
  • jqgrid 搜索弹出窗口允许删除所有过滤器!

    我正在 JqGrid 上尝试非常简单的搜索弹出窗口 请参阅下面的代码 有几个问题 The popup comes up with AND OR and controls at the very top See screenshot belo