Есть ли способ настроить правила поиска в jqGrid в конкретном столбце? - PullRequest
0 голосов
/ 23 июля 2010

У меня есть jqgrid:

    jQuery("#list").jqGrid( {
            url : 'ajax/get',
            datatype : 'json',
            mtype : 'POST',
            colNames : [
                'Date',
                'ID'
            ],
            colModel : [{
                    name : 'date',
                    index : 'date',
                    width : 60,
              align : 'center',
                    searchoptions:{sopt:['gt', 'lt']}
                },{
                    name : 'id',
                    index : 'id',
                    width : 40,
              align : 'center',
                    searchoptions:{sopt:['eq']}
                }]
   //.......
        });

Есть ли способ установить параметр "odata" в столбце "Date". Теперь он показывает «больше» и «меньше». Мне нужно - "от" и "до".

Я пытаюсь это:

colModel : [{
                    name : 'date',
                    index : 'date',
                    width : 60,
                    align : 'center',
                    searchoptions:{sopt:['gt', 'lt'], odata:['from', 'to']}
                }

Это не работает, все еще показывает "больше" и "меньше". Пробовал это:

$(document).ready(function(){
  $.jgrid.search = {
    odata : ['equal','not equal', 'to', 'less or equal','from','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain']
  };
  $.extend($.jgrid.search);
});

Он заменяет «больше» на «от» и «меньше» на «во» во всех столбцах, но мне нужно только в столбце «Дата» Есть ли способ сделать это?

Спасибо.

Ответы [ 3 ]

1 голос
/ 30 ноября 2012

У меня была похожая проблема, и я решил ее путем редактирования исходного кода jqGrid.

Я добавил дополнительные операторы в массив ops. (Это была строка 6130 в версии 4.4.0.)

ops : [
    {"name": "eq", "description": "equal", "operator":"="},
    {"name": "ne", "description": "not equal", "operator":"<>"},
    {"name": "lt", "description": "less", "operator":"<"},
    {"name": "le", "description": "less or equal","operator":"<="},
    {"name": "gt", "description": "greater", "operator":">"},
    {"name": "ge", "description": "greater or equal", "operator":">="},
    {"name": "bw", "description": "begins with", "operator":"LIKE"},
    {"name": "bn", "description": "does not begin with", "operator":"NOT LIKE"},
    {"name": "in", "description": "in", "operator":"IN"},
    {"name": "ni", "description": "not in", "operator":"NOT IN"},
    {"name": "ew", "description": "ends with", "operator":"LIKE"},
    {"name": "en", "description": "does not end with", "operator":"NOT LIKE"},
    {"name": "cn", "description": "contains", "operator":"LIKE"},
    {"name": "nc", "description": "does not contain", "operator":"NOT LIKE"},
    {"name": "nu", "description": "is null", "operator":"IS NULL"},
    {"name": "nn", "description": "is not null", "operator":"IS NOT NULL"},
    {"name": "to", "description": "to", "operator":"<"},
    {"name": "fr", "description": "from", "operator":">"}
    ],
numopts :  
    ['eq','ne','lt','le','gt','ge','nu','nn','in','ni'],
stropts :
    ['eq','ne','bw','bn','ew','en','cn','nc','nu','nn','in', 'ni','to','fr'],

Используйте эти новые параметры в параметре sopt в спецификации столбца даты. (Вам также может понадобиться настроить серверную часть для перевода этих операторов в зависимости от результатов поиска.)

{name:'mydatefield', searchoptions: {sopt:['to', 'fr']}}

Надеюсь, это поможет.

0 голосов
/ 22 ноября 2013
  1. jqGrid Версия 4.5.4
  2. JQuery версии 1.9.0 (включена в Zip-файл jqGrid)
  3. версия Chrome 31.0.1650.48 м

В Jquery 1.9 / 1.10 существует проблема с Chrome 31.x: event.returnValue устарела. Пожалуйста, используйте вместо этого стандартный event.preventDefault (). http://bugs.jquery.com/ticket/14320

Замените следующий код (версия JQuery 2.x) => удалить src.returnValue

    // Events bubbling up the document may have been marked as prevented
    // by a handler lower down the tree; reflect the correct value.
    this.isDefaultPrevented = (src.defaultPrevented ||
    src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;

может работать на меня

0 голосов
/ 26 июля 2010

Чтобы использовать поиск в jqGrid, вы, вероятно, вызываете функцию navGrid, чтобы добавить навигатор с помощью кнопки поиска.Функция navGrid имеет в качестве шестого параметра объект (см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator#definition), который можно использовать для перезаписи любых параметров по умолчанию из параметра $.jgrid.search включительно odata. Таким образом, вы можете сделать что-то вроде следующего*

jQuery("#list").jqGrid('navGrid','#pager',{search:true},{},{},{},
                {odata:['equal','not equal', 'to', 'less or equal','from',
                        'greater or equal', 'begins with','does not begin with',
                        'is in','is not in','ends with','does not end with',
                        'contains','does not contain']});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...