是否可以动态关闭或打开Jqgrid列搜索?

时间:2017-09-05 14:47:00

标签: javascript jquery jqgrid

加载Jgrid后是否可以打开和关闭某些列的搜索功能?

底层代码允许您隐藏搜索部分,但不影响搜索功能

隐藏起来很好但我没有找到我需要做的事情来展示它

此代码不会影响搜索功能

我必须影响搜索

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

Sample jsfiddle

更新

“客户名称”列中的所需组合

search = hidden - > search = false

search = show - > search = true

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

3 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分: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();
  },    

我无法根据第二个代码设置第一个代码!

我希望通过双击

来搜索所有列数据

这对于实用过滤器很重要

我想通过双击在所有区域进行搜索,但我绝不会搜索隐藏的列!

答案 2 :(得分: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();
},