2017-01-03 56 views
1

我熟悉可以將bd添加到每個列過濾器左側下拉選擇中的自定義操作。免費jqGrid - 「空」和「非空」的自定義過濾器規則

後我是什麼,是添加了兩個新類型的運營商定製的過濾: 1.空 2.不空

雖然我知道如何做到這一點本身,我有一個問題Free JqGrid中的這種流的UX。這是因爲這兩個自定義運算符在用戶選擇後不需要用戶輸入,所以用戶在選擇一個空值的運算符後必須點擊'enter' - 非常容易混淆。

我想知道的是如何才達到以下考慮我已經定義了一個新的運營商定製:

  1. 創建事務去一次我選擇了這個操作,而無需等待用戶輸入任何東西,或點擊進入(類似onSelect)。
  2. (可選)禁用在選定特定運算符後在該特定篩選器內鍵入任何內容的功能。

感謝,

塔爾。

回答

2

感謝您指點定義問題的定製一元操作。我承諾代碼free jqGridthe changes允許指定新選項customUnaryOperations內部的自定義一元運算。

The demo定義了兩個自定義篩選操作:「em」(「爲空」)和「nm」(「不爲空」)並使用「Amount」和「Notes」列中的操作。 「註釋」列另外使用標準(預定義)「nu」(「is null」)和「nn」(「非空」)操作。列 「金額」 使用

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而得到任何反應。退出這種模式的唯一方法是選擇一個不同的操作,然後點擊X. – Tal

+0

@Tal:我認爲你是對的。如果當前操作是一元操作,則在點擊「X」時將搜索操作重置爲默認搜索操作(searchoptions.sopt [0]或o.defaultSearch)會很有幫助。我將在免費jqGrid的代碼中進行更改,並會通知您刷新您的免費jqGrid。我現在必須做一些其他的事情,但我稍後會發布你的評論。 – Oleg

+0

@Tal:我向GitHub提交了[相應更改](https://github.com/free-jqgrid/jqGrid/commit/a6e0aa1b8d83a77155c6e10c1e5758c22a238be9)。請重新載入您使用的免費jqGrid,並立即測試「X」的行爲。順便說一下[演示](http://www.ok-soft-gmbh.com/jqGrid/OK/formEditOnDoubleClick-jqueryui-fa3-customUnaryOperations.htm)從GitHub加載jqGrid,因此您可以使用它來表達對我做了最新的變化。 – Oleg