如果在 jqgrid treegrid 中选择了某个级别行,如何隐藏其他级别

Posted

技术标签:

【中文标题】如果在 jqgrid treegrid 中选择了某个级别行,如何隐藏其他级别【英文标题】:how to hide other levels if some level row is selected in jqgrid treegrid 【发布时间】:2013-03-16 04:09:38 【问题描述】:

如果在 jqgrid treegrid 中选择了某行,则所有其他行都将折叠但仍然可见。如何隐藏它们。

例如如果树结构是

Category1
  Subcategory11
  Subcategory12
  ...
Category2
  Subcategory21
  Subcategory22
  ...
Category3
  Subcategory31
  Subcategory32
  ...

最初在jqgrid中以折叠形式显示

Toggle view
Category1
Category2
Category3

用户可以通过点击打开一些节点。在这种情况下(例如在 Category2 中单击)其他类别应从屏幕中删除,以便仅此类别及其子类别可见:

Toggle view
Category2
  Subcategory21
  Subcategory22

Toggle view 链接应切换单个类别和类别列表视图:第一次单击应再次显示折叠的类别列表。 之后再次点击Toggle show all categories 应该只显示上次打开的类别,如上面的屏幕截图所示。

如何实现?

treegrid 定义为

       var treegrid = $("#tree-grid");
        treegrid.jqGrid(
            loadComplete: function (data) 
                $('.tree-leaf', $(this)).css('width', '0px');
            ,
            url: '/Store/GridData',
            datatype: "json",
            mtype: "POST",
            height: "auto",
            loadui: "disable",
            treeGridModel: "adjacency",
            colModel: [
                     name: "id", width: 1, hidden: true, key: true ,
                     name: "menu", classes: "treegrid-column", label: "Tootepuu" ,
                     name: "url", width: 1, hidden: true 
                ],

            gridview: true,
            autowidth: true,
            treeGrid: true,
            ExpandColumn: "menu",
            rowNum: 2000,
            ExpandColClick: true,
            onSelectRow: function (rowid) 
                var treedata = treegrid.jqGrid('getRowData', rowid);
                window.location = treedata.url;
            
        
                );
        treegrid.parents("div.ui-jqgrid-view").children("div.ui-jqgrid-hdiv").hide();

如果选择了某个类别,则当前它会离开,而主类别列表也可见

Category1
Category2
  Subcategory21
  Subcategory22
Category3

如何为此定制 jqgrid ?或者可以使用其他一些树插件或 ASP.NET MVC2 控件吗?

【问题讨论】:

【参考方案1】:

您可以像here 中描述的那样捕获展开事件

并使用

$("#"+someRow).css('display') == 'none'

隐藏所有你想要的行。

【讨论】:

以上是关于如果在 jqgrid treegrid 中选择了某个级别行,如何隐藏其他级别的主要内容,如果未能解决你的问题,请参考以下文章

jqGrid -treeGrid 按需加载

jQGrid TreeGrid 的内联导航 addRow 方法无法正常工作

jqgrid treeGrid无法读取未定义的属性'rowIndex'

js-jqgrid treegrid不能多选,怎么解决

jqgrid在IE8上不起作用

跪求一个Jquery TreeGrid实例!!!API的不算!!