2017-09-05 78 views
1

加載Jgrid後,是否可以打開和關閉某些列的搜索功能?是否可以動態關閉或打開Jqgrid列搜索?

底層代碼允許您隱藏的搜索部分,但不影響搜索功能

它工作正常,隱瞞,但我還沒有發現什麼,我需要做的,表現出來

這代碼不影響搜索功能

我要影響搜索

$("#gs_name").closest(".ui-search-table").hide(); 

Sample jsfiddle

UPDATE

在客戶端名稱列中的所希望的組合

搜索=隱藏 - >搜索=假

搜索=展示 - >搜索=真

$("#columnhide").click(function(){ 
$("#gs_name").val("") 
$("#gs_name").closest(".ui-search-table").toggle(); 
}); 
+0

你是什麼意思下的「搜索功能」?你試圖實現什麼? 您可以使用'.show()'方法顯示隱藏在'.hide()'中的控件,或者您可以使用'.toggle()'顯示或隱藏當前狀態:http://jsfiddle.net/ OlegKi/ejnrtocw/268/ – Oleg

+0

隱藏和顯示是非常感謝,我想隱藏時搜索不活動 是否有可能隱藏搜索部分禁用後端搜索? – Horus

+0

歡迎您!您發佈的演示不會搜索到服務器。一個用戶直接開始搜索,如果你清除某個字段並隱藏它,這將不起作用。另外,您的演示可以開始在'ondblClickRow'內搜索。您可以測試cm [iCol] .search!== false'或者相應的字段是否隱藏,並且**不能在**的情況下啓動sermentation。當搜索可以開始時,你還有其他的情況嗎? – Oleg

回答

0

雙擊中的隱藏屬性是colModel的一個屬性。在你的情況下,你應該使用jquery selector :hidden來完成這項工作。

的代碼可以改變這樣的:

ondblClickRow: function(rowid, iRow, iCol, e) { 
    var cm = $(this).jqGrid("getGridParam", "colModel"); 
    var cmvalues = $(this).jqGrid("getRowData", rowid); 
    $.each(cm, function(i,n){ 
     if(!n.hidden) { 
      var elem = $('#gs_'+n.name); 
      if(elem.is(":hidden") { 
       // set it to empty to overcome search when trigger 
       elem.val(""); 
      } else { 
       elem.val(cmvalues[n.name]); 
      } 
     } 
    }); 
    this.triggerToolbar(); 
}, 
+0

偉大的工作,謝謝 – Horus

1

如果我正確理解你需要實現什麼,那麼http://jsfiddle.net/OlegKi/ejnrtocw/270/將演示你可以做什麼。該代碼使用

$("#columnhide").click(function(){ 
    var $searchField = $("#gs_name"); 
    $searchField.val(""); // clear the filter 
    $searchField.closest(".ui-search-table").toggle(); // hide or show the control 
    $(this).html("<b>" + ($searchField.is(":hidden") ? "Show" : "Hide") + 
       "</b> Client Name Search"); 
    $("#grid")[0].triggerToolbar(); // force filtering without a filter in "name" field 
}); 

和額外的``回調的代碼修改爲以下

ondblClickRow: function(rowid, iRow, iCol, e) { 
    var $grid = $(this), 
     cm = $grid.jqGrid("getGridParam", "colModel"), 
     cellvalue = $grid.jqGrid("getCell", rowid, iCol), 
     $searchField = $("#gs_" + cm[iCol].name); 

    if (!$searchField.is(":hidden")) { 
     $searchField.val(cellvalue); 
     this.triggerToolbar(); 
    } 
} 
+0

謝謝你的幫助,你給我的代碼非常有用 – Horus

0
This code searches its data if the column is clicked 

ondblClickRow: function(rowid, iRow, iCol, e) { 
     var $grid = $(this), 
      cm = $grid.jqGrid("getGridParam", "colModel"), 
      cellvalue = $grid.jqGrid("getCell", rowid, iCol), 
      $searchField = $("#gs_" + cm[iCol].name); 
     if (!$searchField.is(":hidden")) { 
      $searchField.val(cellvalue); 
      this.triggerToolbar(); 
     } 
    }, 

的所有列檢索

 ondblClickRow: function(rowid, iRow, iCol, e) { 
     var grid=$('#grid'); 
    var cm = $(this).jqGrid("getGridParam", "colModel"); 
    var cmvalues = $(this).jqGrid("getRowData", rowid); 
    $.each(cm, function(i,n){ 
     if(!n.hidden) { 
      $('#gs_'+n.name).val(cmvalues[n.name]) 
     } 
    }); 
    this.triggerToolbar(); 
    },  

我無法設置第一代碼根據第二個代碼!

我想通過雙擊

這是一個實用的過濾器

我想通過做雙擊做到在各個領域搜索的重要搜索所有列的數據,但我絕不會搜查隱藏的列!

相關問題