2

如果在 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再次点击应该只显示最后打开的类别,如上面的屏幕截图所示。

如何实施?

树网格定义为

       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 控件吗?

4

1 回答 1

0

您可以像这里描述的那样捕获扩展事件

并使用

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

隐藏您想要的所有行。

于 2013-04-10T13:35:38.897 回答