2010-07-23 1 views
0

Я jqgrid:Есть ли способ настроить правила поиска в 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» в колонке «Дата». Теперь он показывает «больше» и «меньше». Мне нужно - «от» и «до».

Я стараюсь это:

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); 
}); 

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

Спасибо.

ответ

0

Чтобы использовать поиск в jqGrid, вы вызываете функцию navGrid, чтобы добавить навигатор с кнопкой поиска. Функция navGrid имеет в качестве 6-го параметра объект (см. 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']}); 
+0

Это не работает. Правила не меняются. Несмотря на это, я думаю, что этот код также заменит глобальный $ .jqgrid.search, но мне нужно только в столбце «Дата». – andser

+0

Вы должны лучше протестировать свой код перед написанием комментария. Посмотрите на исходный код http://www.ok-soft-gmbh.com/jqGrid/ClientsideEditing3.htm, измените данные с помощью двойного щелчка и попробуйте найти «Имя» полей «Группа». Все работает. Параметры 'navGrid' причины НЕ перезаписывайте глобальные настройки из' $ .jqgrid.search'. – Oleg

1

У меня была подобная проблема, и я решил ее решить, отредактировав некоторые исходные коды 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
  1. jqGrid Version 4.5.4
  2. JQuery версии 1.9.0 (входит в jqGrid Zip File)
  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; 

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

Смежные вопросы