我需要在搜索彈出窗口中隱藏操作符,但我無法使其運行。 我嘗試這樣做,但無論是運營商還是會出現:刪除多搜索中的搜索運算符(AND/OR)jqGrid
jQuery("#grilla").navGrid("#paginador",
{del:false,add:false,edit:false},{},{},{},{
groupOps: [{ op: "OR", text: "any" }], multipleSearch:true});
任何想法? 謝謝!
我需要在搜索彈出窗口中隱藏操作符,但我無法使其運行。 我嘗試這樣做,但無論是運營商還是會出現:刪除多搜索中的搜索運算符(AND/OR)jqGrid
jQuery("#grilla").navGrid("#paginador",
{del:false,add:false,edit:false},{},{},{},{
groupOps: [{ op: "OR", text: "any" }], multipleSearch:true});
任何想法? 謝謝!
沒有可以直接做你需要的選項。此外,如果在對話框初始化時(例如在beforeShowSearch事件處理程序中)隱藏搜索對話框中的ADD/OR操作數與$('select.opsel').hide()
,select元素將僅在開始時隱藏。在用戶點擊任何按鈕後,對話框包含的內容將被重新繪製,而不會調用任何事件處理程序,並且select元素將再次可見。
所以我建議通過覆蓋過濾器對話框的方法reDraw來解決問題。這樣做的代碼可能看起來像
jQuery("#grilla").jqGrid("navGrid","#paginador",
{del: false, add: false, edit: false}, {}, {}, {},
{
multipleSearch: true,
beforeShowSearch: function($form) {
var searchDialog = $form[0],
oldrReDraw = searchDialog.reDraw, // save the original reDraw method
doWhatWeNeed = function() {
// hide the AND/OR operation selection
$('select.opsel', searchDialog).hide();
setTimeout(function() {
// set fucus in the last input field
$('input[type="text"]:last', searchDialog).focus();
}, 50);
}
searchDialog.reDraw = function() {
oldrReDraw.call(searchDialog); // call the original reDraw method
doWhatWeNeed();
}
doWhatWeNeed();
}
}
);
您可以在the demo上看到這種方式真正起作用。
UPDATED:寫完答案後,我發佈了一些建議,以改善jqGrid。現在jqGrid有許多功能可以簡化上述工作。例如存在可以直接使用的回調。因此,從答案的代碼看起來像
grid.jqGrid("navGrid", "#pager",
{add: false, edit: false, del: false}, {}, {}, {},
{
multipleSearch: true,
afterRedraw: function (p) {
var $form = $(this);
$form.find("select.opsel").hide();
setTimeout(function() {
// set fucus in the last input field
$form.find('input[type="text"]:last').focus();
}, 50);
$form.find("input.add-rule,input.delete-rule").button();
}
}
);
看到修改後的演示here:
我增加了一個行的
$form.find("input.add-rule,input.delete-rule").button();
代碼只改善搜索對話框中按鈕的外觀。我建議在jqGrid中默認設置這樣的設置,但這不被三行數據接受。無論如何,每個包含jQuery UI的人都可以在中添加這樣的代碼,使按鈕變得平坦。
接受的答案在4.4.0中不適用於我。
簡單多了似乎是掛鉤afterRedraw事件並刪除OPSEL選擇元素:
jQuery("#grilla")jqGrid(
"navGrid","#paginador", {del:false,add:false,edit:false},{},{},{},
{
multipleSearch:true,
afterRedraw: function($p) {
$("select.opsel").remove();
}
}
);
看這裏!
//own add edit del search
jQuery("#gridTable3").jqGrid('navGrid', '#gridPager3',
{
//options
},
{
// edit options
height: 250,
reloadAfterSubmit: false,
closeAfterEdit: true,
afterSubmit: function(r, data) {
var messageString = r.responseText;
var mesObj = eval('(' + messageString + ')');
return [mesObj.state, mesObj.message];
}
},
{
// add options
height: 250,
reloadAfterSubmit: false,
closeAfterAdd: true,
afterSubmit: function(r, data) {
var messageString = r.responseText;
var mesObj = eval('(' + messageString + ')');
return [mesObj.state, mesObj.message];
}
},
{
// del options
reloadAfterSubmit: false,
closeAfterDel: true,
afterSubmit: function(r, data) {
var messageString = r.responseText;
var mesObj = eval('(' + messageString + ')');
return [mesObj.state, mesObj.message];
}
},
{
// search options
multipleSearch: true,//more search write there,don't pop
afterSubmit: function(r, data) {
var messageString = r.responseText;
var mesObj = eval('(' + messageString + ')');
return [mesObj.state, mesObj.message];
}
});
謝謝,它的工作原理! – Martin 2011-05-25 17:55:13
@Martin:不客氣! – Oleg 2011-05-25 18:12:28
不適用於4.4.3,我猜這不適用於> = 4.4.0 – 2013-01-28 20:44:20