假設我有一列包含多個值,例如,假設我們有一個包含教師名稱&個部門(逗號分隔)的表。教師可以屬於多個部門。在Jqgrid中搜索列中有多個值的值
我想要搜索包含以搜索字段中鍵入的字母開頭的部門的行。
現在我正在使用bw過濾器,它只用於逗號分隔列表中的第一個條目(因爲它將整個列表作爲單個字符串)。
假設我有一列包含多個值,例如,假設我們有一個包含教師名稱&個部門(逗號分隔)的表。教師可以屬於多個部門。在Jqgrid中搜索列中有多個值的值
我想要搜索包含以搜索字段中鍵入的字母開頭的部門的行。
現在我正在使用bw過濾器,它只用於逗號分隔列表中的第一個條目(因爲它將整個列表作爲單個字符串)。
jqGrid不提供任何自定義操作的可能性,如「以開始」在逗號分隔的子字符串中搜索。所以人們必須使用標準操作。另一方面,可以繼承jqGrid在過濾過程中使用的對象的方法$.jgrid.from
。我發佈了一些其他答案,展示了這種技術。這還不是那麼容易。因此,我創建the demo它演示瞭如何繼承的$.jgrid.from
startsWith
方法,以便它在特殊的方式像你需要,但只有在特殊的列(見恆"departments"
在下面的代碼)
var oldFrom = $.jgrid.from;
$.jgrid.from = function (source, initalQuery) {
var result = oldFrom(source, initalQuery),
old_startsWith = result.startsWith;
result.startsWith = function (f, v) {
if (f !== "departments") {
return old_startsWith.call(result, f, v);
}
var self = result, val = (v === null) ? f : v, length = val.toString().length;
self._append(
'jQuery.map(' +
self._getStr('jQuery.jgrid.getAccessor(this,\'' + f + '\')') +
'.split(","),function(item) {if (item.substr(0,' + length + ')===' +
self._getStr('"' + self._toStr(v) + '"') +
") { return item; }}).length > 0"
);
self._setCommand(self.startsWith, f);
self._resetNegate();
return self;
};
return result;
};
如果一個過濾字符串「D2」列「部門」一會看到以下結果
我經歷了其他答案,但無法實現所需的功能。但上面的代碼工作就像魅力! :) 謝謝你的幫助。 – Vivek 2014-10-28 06:50:48
@Vivek:不客氣! – Oleg 2014-10-28 07:02:21
@Vivek:小常見評論:我發現你從來沒有使用過[投票](在答案或問題的最小部分向上箭頭鍵)。您有權每天投票最多30個答案或問題**(請參閱[此處](http://meta.stackexchange.com/a/5213))。通過投票你給搜索引擎的技巧,並幫助其他用戶的計算器找到關於計算器的信息。 *所以,如果你想要幫助其他人,你應該使用你的投票權和投票的所有信息的stackoverflow,你會發現有用和有趣的,你會推薦其他*。 – Oleg 2014-10-28 08:12:11
使用哪個'datatype'?是在本地搜索*還是需要將相應的搜索請求發送到服務器?您是否使用搜索對話框([高級搜索](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:advanced_searching)),[工具欄搜索](http://www.trirand.com/ jqgridwiki/doku.php?id = wiki:toolbar_searching),還是其他一些自定義搜索? – Oleg 2014-10-27 11:19:52
感謝您的迴應。我在本地搜索並使用工具欄搜索。 – Vivek 2014-10-27 11:24:12