2017-01-03 5 views
1

Я знаком с пользовательскими операциями, которые можно добавить bd в раскрывающийся список слева рядом с каждым фильтром столбцов.Free jqGrid - Правило пользовательского фильтра для «пустого» и «не пустого»

Что я после этого, является добавление двух новых типов пользовательских операторов для фильтрации: 1. Пустой 2. Не пусто

В то время как я знаю, как добиться того, что сам по себе, у меня есть проблемы с UX такого потока в Free JqGrid. Это связано с тем, что эти два пользовательских оператора не нуждаются ни в каком входе от пользователя после их выбора, поэтому пользователю нужно будет нажать «войти» после выбора этого оператора с пустым значением - очень запутанным.

То, что я хочу знать, как достигнуть следующих рассмотреть я уже определил новый пользовательский оператор:

  1. совершить сделку идти, как только я выбираю этот оператор, не дожидаясь, пока пользователь ничего типа, или нажмите кнопку ввода (что-то вроде onSelect).
  2. При необходимости отключите возможность вводить что-либо в пределах этого фильтра после того, как выбран этот конкретный оператор.

Спасибо,

Tal.

ответ

2

Благодарим за внимание, что проблема определения нестандартная унарные операции. Я совершил the changes кода free jqGrid, чтобы разрешить указывать пользовательские унарные операции внутри новой опции customUnaryOperations.

определяет две пользовательские операции фильтрации: «em» («is empty») и «nm» («is not empty») и используют операции в столбцах «Сумма» и «Примечания». В столбце «Примечания» дополнительно используются стандартные (предопределенные) операции «nu» («null») и «nn» («не null»). В колонке "Сумма" использует

searchoptions: {sopt: ["eq", "ne", "em", "nm"]} 

и столбец "примечание" используется

searchoptions: {sopt: ["cn", "bw", "ew", "eq", "bn", "nc", "en", "nu", "nn", "em", "nm"]} 

дополнительно демка использует customSortOperations и новый customUnaryOperations:

customUnaryOperations: ["em", "nm"], 
customSortOperations: { 
    em: { 
     operand: "=''", 
     text: "is empty", 
     filter: function (options) { 
      var v = options.item[options.cmName]; 
      if (v === undefined || v === "") { 
       return true; 
      } 
     } 
    }, 
    nm: { 
     operand: "!=''", 
     text: "isn't empty", 
     filter: function (options) { 
      var v = options.item[options.cmName]; 
      if (v !== undefined && v !== "") { 
       return true; 
      } 
     } 
    } 
} 
+0

Здравствуйте Олег, X справа столбца, не работает при использовании операций Unary. Я полагаю, это из-за того, что нет значения для сброса, и поэтому пользователь не получает никакой реакции в результате нажатия на X. Единственный способ выйти из этого режима - выбрать другой op, а затем нажмите на X. – Tal

+0

@Tal: Я думаю, что вы правы. Было бы полезно сбросить операцию поиска по умолчанию (searchoptions.sopt [0] или o.defaultSearch) при нажатии на «X», если текущая операция является унарной операцией. Я внесу изменения в код бесплатного jqGrid и проинформирую вас об обновлении бесплатного jqGrid. Теперь я должен сделать что-то другое, но позже я отправлю вам комментарий. – Oleg

+0

@Tal: Я совершил [соответствующие изменения] (https://github.com/free-jqgrid/jqGrid/commit/a6e0aa1b8d83a77155c6e10c1e5758c22a238be9) в GitHub. Пожалуйста, перезагрузите jqGrid, который вы используете и проверяете поведение «X». Кстати [demo] (http://www.ok-soft-gmbh.com/jqGrid/OK/formEditOnDoubleClick-jqueryui-fa3-customUnaryOperations.htm) загружает jqGrid из GitHub, поэтому вы можете использовать его для торжества последние изменения, которые я сделал. – Oleg