我有完全一樣的體驗,在the JQGrid forum報道。的jqGrid:剪切和粘貼過濾器工具欄不會觸發過濾
如果我複製和粘貼通過鼠標一些文本搜索字段(即右鍵點擊「粘貼」),搜索不會被觸發。如果我通過鍵盤複製並粘貼(例如Ctrl + C和Ctrl + V),則會觸發搜索。
I.e.它似乎只在按鍵/鍵盤上觸發搜索 - 我怎樣才能配置網格以識別鼠標粘貼事件?
我有完全一樣的體驗,在the JQGrid forum報道。的jqGrid:剪切和粘貼過濾器工具欄不會觸發過濾
如果我複製和粘貼通過鼠標一些文本搜索字段(即右鍵點擊「粘貼」),搜索不會被觸發。如果我通過鍵盤複製並粘貼(例如Ctrl + C和Ctrl + V),則會觸發搜索。
I.e.它似乎只在按鍵/鍵盤上觸發搜索 - 我怎樣才能配置網格以識別鼠標粘貼事件?
你有兩個選擇,你可以試試。
選項1:
您可以設置您的工具欄僅通過選項設置上輸入要搜索:searchOnEnter爲true設置工具欄的時候。這將需要進入到被點擊之前,過濾器會發生,不管它是如何進入
$("#grid_id").jqGrid('filterToolbar',{ searchOnEnter: true });
選項2:(更新來修復錯誤)
檢測粘貼事件使用jQuery,然後調用api來觸發工具欄搜索。
var headers = $('.ui-th-column');
$.each(headers, function(index, item) {
var div = $(this).children('div');
if (div.length > 0) {
var input = div.children('input');
if (input.length > 0) {
$(input).bind('paste', function(e) {
var sgrid = $("#grid_id")[0];
sgrid.triggerToolbar();
});
}
}
});
注:它不會出現有觸發使用新的API搜索的方式。
我想我已經破解了。您可以在「dataEvents」陣列中searchOptions添加一個「貼」事件:
var colModel = [...,
searchoptions: {
dataEvents: [
{ type: 'paste',
fn: function(e) {
setTimeout(function() {
var sgrid = $("#grid_id")[0];
sgrid.triggerToolbar();
}, 1);
}
}
]}
];
注意setTimeout調用 - 我認爲有必要添加,否則搜索地沒有粘貼值觸發
該解決方案與@fbfcn提出的選項2大致相同,但我更喜歡它,因爲它與API更乾淨。
評論贊賞!
+1更清晰,並且不需要我必須做的所有選擇器。 – 2012-08-10 16:04:52
Argg ....這個解決方案的問題在於,當您將值粘貼到高級搜索搜索表單的文本字段中時,它會觸發工具欄搜索 - 而不是我想要的行爲。 – johan 2012-08-13 07:27:06
我寧願不使用選項1(searchONEnter:真) – johan 2012-08-10 15:48:05
標記此爲正確的,因爲使用dataInit我的回答如果你使用它攪亂了先進的搜索對話框。請注意,我仍然需要添加setTimeout調用以使其工作 – johan 2012-08-13 07:31:41