【问题标题】:Hide expand/collapse symbol or deactivate spec. rows in jqGrid subgrid隐藏展开/折叠符号或停用规范。 jqGrid 子网格中的行
【发布时间】:2011-05-30 20:37:44
【问题描述】:

我有一个带有子网格的网格:只有主网格的第一行需要有子网格。

我通过谷歌和http://www.trirand.com/....i:subgrid&s[]=hidecol找到的解决方案 不工作。

是否有快速而肮脏(硬编码)的解决方案?

【问题讨论】:

    标签: jqgrid subgrid


    【解决方案1】:

    使用jQuery("#grid_id").hideCol('subgrid'); 隐藏“子网格”列删除可用于展开或折叠子网格的完整列,因此您不能在您的情况下使用该方式。

    我建议您清除“子网格”列的包含并取消绑定loadComplete事件句柄内的单元格的“点击”事件:

    loadComplete: function() {
        $("td.sgcollapsed:not(:first)","#list").unbind('click').html('');
    }
    

    您将获得以下结果: (你可以看到相应的例子直播here)。重要的是要了解,loadComplete 事件将在任何页面上调用,因此在第二页上,您也只会在第一行上拥有 subrgid。

    如果您需要在选择需要具有子网格的行时实现更复杂的逻辑,您可以使用以下代码

    loadComplete: function() {
        var grid = $("#list");
        var subGridCells = $("td.sgcollapsed",grid[0]);
        $.each(subGridCells,function(i,value){
            if (i!==0) {
                $(value).unbind('click').html('');
            }
        });
    }
    

    上面的代码和$("td.sgcollapsed:not(:first)","#list").unbind('click').html('')的语句一样,但是你可以很容易地修改最后一个版本的代码来实现更复杂的行为。

    已更新:如果您只需要对rowid 标识的某些行使用有损子网格,您可以使用

    $("#"+rowid+" td.sgcollapsed",grid[0]).unbind('click').html('');
    

    (查看直播here)在loadComplete 内。如果您需要为所有 id 不等于 rowid 的行停用子网格,您可以进行如下操作

    $('td.sgcollapsed:not("#'+rowid+' td.sgcollapsed")',grid[0]).unbind('click').html('');
    

    (观看直播here

    更新free jqGrid 现在有the answer 中描述的新功能:hasSubgrid 回调可以在subGridOptions 中指定。它允许通知 jqGrid 哪些行不应该有子网格。

    【讨论】:

    • 您能否在空闲时间解决我的问题here。谢谢
    • 太棒了...我并不需要这个。但是,它的解释方式。它帮助了我。再次感谢您 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多