需要jquery.treegrid.js
https://github.com/maxazan/jquery-treegrid
还有对应的CSS
.treegrid-indent {
    width: 16px;
    height: 16px;
    display: inline-block;
    position: relative;
}.treegrid-expander {
    width: 16px;
    height: 16px;
    display: inline-block;
    position: relative;
    cursor: pointer;
}.treegrid-expander-expanded {
    background-image: url(../img/collapse.png);
}.treegrid-expander-collapsed {
    background-image: url(../img/expand.png);
}

解决方案 »

  1.   

    如果jqGrid配置了gridview为true,树形表格不会被构造。
      

  2.   

    我也遇到这个问题了,用的是ace模板框架。楼主解决了吗?
      

  3.   

    请参考动态esayui treegrid//装载Grid
        function Comp_InitGrid() {
            var Comp_queryData = {
                Comp_MemberId: $.trim($("#Comp_MemberId").textbox("getValue")),
                Comp_MemberName: $.trim($("#Comp_MemberName").textbox("getValue"))
            };
            $('#Comp_grid').datagrid({   //定位到Table标签,Table标签的ID是grid
                url: host_key + '/Complaint/GetAppList',   //指向后台的Action来获取当前菜单的信息的Json格式的数据
                title: '投诉列表',
                iconCls: 'icon-view',
                fit: true,
                fitColumns: true,
                view: detailview,
                nowrap: true,
                autoRowHeight: false,
                striped: true,
                collapsible: true,
                rownumbers: true,
                sortOrder: 'asc',
                remoteSort: false,
                singleSelect: true,  //选中行唯一
                pagination: true,
                pageSize: 15,
                pageList: [15, 30, 45, 60],
                method: 'post',
                idField: 'Id',
                queryParams: Comp_queryData,  //异步查询的参数
                columns: [[
                              { title: "Id", field: "Id", width: 95, hidden: true },
                              { title: "日期", field: "C_Time", width: 95, hidden: true, formatter: DateFormat },
                              { title: "投诉人", field: "uName", width: 95, sortable: true },
                              { title: "投诉内容", field: "Msg", width: 95, sortable: true },
                              { title: "记录人", field: "Creator", width: 95, sortable: true },
                              { title: "来源", field: "Comefrom", width: 95, sortable: true },
                              { title: "进度", field: "state", width: 95, sortable: true,formatter: stateFormat },
                              { title: "状态", field: "CloseFlag", width: 95,formatter:CompFlagFormat },
                              { title: "操作", field: "ViewOper", width: 175, formatter: Operation }            ]],
                onClickCell: function (index, row) {
                    if (row == "ViewOper") {
                        //$('#Comp_grid').datagrid('selectRow', index);
                        
                    }
                },
                onLoadSuccess: function (row, data) {
                    if (data != null && data.total > 0) {
                        $('.viewCompcls').linkbutton({ text: '详细', plain: true, iconCls: 'icon-menu' });
                        $('.AddProcesscls').linkbutton({ text: '新增进度', plain: true, iconCls: 'icon-add' });
                        $('.CloseCompcls').linkbutton({ text: '关闭', plain: true, iconCls: 'icon-undo' });
                    }
                },
                detailFormatter: function (rowIndex, rowData) { //对“+”的详细设置
                    return '<div style="padding:2px;height:100%;"><table id="ddv-' + rowIndex + '"></table></div>';
                },
                onExpandRow: function (indexRelease, rowRelease) { //当“+”点击后展开发生的事件
                    var obj = $('#ddv-' + indexRelease);
                    if (!obj.data('init')) {//未初始化过
                        $('#ddv-' + indexRelease).datagrid({
                            url: '/Complaint/GetAppProcessList',   //指向后台的Action来获取当前菜单的信息的Json格式的数据
                            iconCls: 'icon-tb',
                            fitColumns: true,
                            singleSelect: true,
                            rownumbers: true,
                            loadMsg: '',
                            height: 'auto',
                            idField: 'Id',
                            queryParams: { CompRecId: rowRelease.Id },  //异步查询的参数
                            columns: [[
                              { title: "Id", field: "Id", width: 95, hidden: true },
                              { title: "日期", field: "C_Time", width: 95, formatter: DateFormat },
                              { title: "记录人", field: "Creator", width: 95, sortable: true },
                              { title: "描述", field: "", width: 95, sortable: true },
                              { title: "下一部门", field: "NextDepName", width: 95, sortable: true },
                              { title: "下一处理人", field: "NextOperName", width: 95, sortable: true },
                              { title: "状态", field: "ProcFlag", width: 95, formatter: ProcFlagFormat }
                            ]],
                            onLoadSuccess: function (row, data) {
                                setTimeout(function () {
                                    var tr = obj.closest('tr'), //获取子表格所在行
                                   id = tr.prev().attr('id'); //此子表格父行所在行的id
                                    id = id.replace(/-2-(\d+)$/, '-1-$1'); //detailview没有展开的前部分的id是有规则的
                                    //通过下面的这2个示例你应该不难看出改变的是什么
                                    //datagrid-row-r1-1-0
                                    //datagrid-row-r1-2-0
                                    $('#' + id).next().css('height', tr.height());//设置没展开的前部分的高度,由于启用了计时器,会闪一下
                                }, 1); //延时触发设置高度事件,因为这个事件只是数据加载完毕,并没有生成DOM对象,不延时触发设置不了
                            }
                        })
                    }
                    obj.data('init', true);
                }
            })
        };
      

  4.   


    你好请问这个问题解决了,我目前也在用ACE模板遇到这个问题
      

  5.   

    如果使用的ACE Admin框架模板,在使用jqGrid的treeGrid插件时,与ace框架的ace.min.css冲突。
    把这个注释掉就可以正常使用了,当然,这样就用不了ace.min.css中的样式了。具体冲突在哪个地方我没去看。
      

  6.   

    如图,ace.min.css和ui.jqgrid.min.css拥有相同的一个class属性。在使用treeGrid的时候由于ace.min.css放在最后加载,所以使用了ace.min.css样式。
    其中left属性值为none,这就导致了树的折叠图标在表格的下方(表格下方border位置)。又由于没有引入treeGrid加载的图标,所以看不到。
    所以让人感觉treeGrid没起作用一样。
    修改ace.min.css 中 的 .ui-jqgrid .tree-wrap-ltr 值即可。
      

  7.   

    在<link rel="stylesheet" href="assets/css/jquery-ui-1.10.3.custom.min.css" />或者<link rel="stylesheet" href="assets/css/jquery-ui-1.10.3.full.min.css" />(看你用的是哪个)中,添加上
    /* Icons
    ----------------------------------*//* states and images */
    .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
    .ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
    .ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
    .ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
    .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
    .ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
    .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
    .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }/* positioning */
    .ui-icon-carat-1-n { background-position: 0 0; }
    .ui-icon-carat-1-ne { background-position: -16px 0; }
    .ui-icon-carat-1-e { background-position: -32px 0; }
    .ui-icon-carat-1-se { background-position: -48px 0; }
    .ui-icon-carat-1-s { background-position: -64px 0; }
    .ui-icon-carat-1-sw { background-position: -80px 0; }
    .ui-icon-carat-1-w { background-position: -96px 0; }
    .ui-icon-carat-1-nw { background-position: -112px 0; }
    .ui-icon-carat-2-n-s { background-position: -128px 0; }
    .ui-icon-carat-2-e-w { background-position: -144px 0; }
    .ui-icon-triangle-1-n { background-position: 0 -16px; }
    .ui-icon-triangle-1-ne { background-position: -16px -16px; }
    .ui-icon-triangle-1-e { background-position: -32px -16px; }
    .ui-icon-triangle-1-se { background-position: -48px -16px; }
    .ui-icon-triangle-1-s { background-position: -64px -16px; }
    .ui-icon-triangle-1-sw { background-position: -80px -16px; }
    .ui-icon-triangle-1-w { background-position: -96px -16px; }
    .ui-icon-triangle-1-nw { background-position: -112px -16px; }
    .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
    .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
    .ui-icon-arrow-1-n { background-position: 0 -32px; }
    .ui-icon-arrow-1-ne { background-position: -16px -32px; }
    .ui-icon-arrow-1-e { background-position: -32px -32px; }
    .ui-icon-arrow-1-se { background-position: -48px -32px; }
    .ui-icon-arrow-1-s { background-position: -64px -32px; }
    .ui-icon-arrow-1-sw { background-position: -80px -32px; }
    .ui-icon-arrow-1-w { background-position: -96px -32px; }
    .ui-icon-arrow-1-nw { background-position: -112px -32px; }
    .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
    .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
    .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
    .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
    .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
    .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
    .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
    .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
    .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
    .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
    .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
    .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
    .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
    .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
    .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
    .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
    .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
    .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
    .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
    .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
    .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
    .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
    .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
    .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
    .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
    .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
    .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
    .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
    .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
    .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
    .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
    .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
    .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
    .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
    .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
    .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
    .ui-icon-arrow-4 { background-position: 0 -80px; }
    .ui-icon-arrow-4-diag { background-position: -16px -80px; }
    .ui-icon-extlink { background-position: -32px -80px; }
    .ui-icon-newwin { background-position: -48px -80px; }
    .ui-icon-refresh { background-position: -64px -80px; }
    .ui-icon-shuffle { background-position: -80px -80px; }
    .ui-icon-transfer-e-w { background-position: -96px -80px; }
    .ui-icon-transferthick-e-w { background-position: -112px -80px; }
    .ui-icon-folder-collapsed { background-position: 0 -96px; }
    .ui-icon-folder-open { background-position: -16px -96px; }
    .ui-icon-document { background-position: -32px -96px; }
    .ui-icon-document-b { background-position: -48px -96px; }
    .ui-icon-note { background-position: -64px -96px; }
    .ui-icon-mail-closed { background-position: -80px -96px; }
    .ui-icon-mail-open { background-position: -96px -96px; }
    .ui-icon-suitcase { background-position: -112px -96px; }
    .ui-icon-comment { background-position: -128px -96px; }
    .ui-icon-person { background-position: -144px -96px; }
    .ui-icon-print { background-position: -160px -96px; }
    .ui-icon-trash { background-position: -176px -96px; }
    .ui-icon-locked { background-position: -192px -96px; }
    .ui-icon-unlocked { background-position: -208px -96px; }
    .ui-icon-book { background-position: -224px -96px; }
    .ui-icon-tag { background-position: -240px -96px; }
    .ui-icon-home { background-position: 0 -112px; }
    .ui-icon-flag { background-position: -16px -112px; }
    .ui-icon-calendar { background-position: -32px -112px; }
    .ui-icon-cart { background-position: -48px -112px; }
    .ui-icon-pencil { background-position: -64px -112px; }
    .ui-icon-clock { background-position: -80px -112px; }
    .ui-icon-disk { background-position: -96px -112px; }
    .ui-icon-calculator { background-position: -112px -112px; }
    .ui-icon-zoomin { background-position: -128px -112px; }
    .ui-icon-zoomout { background-position: -144px -112px; }
    .ui-icon-search { background-position: -160px -112px; }
    .ui-icon-wrench { background-position: -176px -112px; }
    .ui-icon-gear { background-position: -192px -112px; }
    .ui-icon-heart { background-position: -208px -112px; }
    .ui-icon-star { background-position: -224px -112px; }
    .ui-icon-link { background-position: -240px -112px; }
    .ui-icon-cancel { background-position: 0 -128px; }
    .ui-icon-plus { background-position: -16px -128px; }
    .ui-icon-plusthick { background-position: -32px -128px; }
    .ui-icon-minus { background-position: -48px -128px; }
    .ui-icon-minusthick { background-position: -64px -128px; }
    .ui-icon-close { background-position: -80px -128px; }
    .ui-icon-closethick { background-position: -96px -128px; }
    .ui-icon-key { background-position: -112px -128px; }
    .ui-icon-lightbulb { background-position: -128px -128px; }
    .ui-icon-scissors { background-position: -144px -128px; }
    .ui-icon-clipboard { background-position: -160px -128px; }
    .ui-icon-copy { background-position: -176px -128px; }
    .ui-icon-contact { background-position: -192px -128px; }
    .ui-icon-image { background-position: -208px -128px; }
    .ui-icon-video { background-position: -224px -128px; }
    .ui-icon-script { background-position: -240px -128px; }
    .ui-icon-alert { background-position: 0 -144px; }
    .ui-icon-info { background-position: -16px -144px; }
    .ui-icon-notice { background-position: -32px -144px; }
    .ui-icon-help { background-position: -48px -144px; }
    .ui-icon-check { background-position: -64px -144px; }
    .ui-icon-bullet { background-position: -80px -144px; }
    .ui-icon-radio-off { background-position: -96px -144px; }
    .ui-icon-radio-on { background-position: -112px -144px; }
    .ui-icon-pin-w { background-position: -128px -144px; }
    .ui-icon-pin-s { background-position: -144px -144px; }
    .ui-icon-play { background-position: 0 -160px; }
    .ui-icon-pause { background-position: -16px -160px; }
    .ui-icon-seek-next { background-position: -32px -160px; }
    .ui-icon-seek-prev { background-position: -48px -160px; }
    .ui-icon-seek-end { background-position: -64px -160px; }
    .ui-icon-seek-start { background-position: -80px -160px; }
    /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
    .ui-icon-seek-first { background-position: -80px -160px; }
    .ui-icon-stop { background-position: -96px -160px; }
    .ui-icon-eject { background-position: -112px -160px; }
    .ui-icon-volume-off { background-position: -128px -160px; }
    .ui-icon-volume-on { background-position: -144px -160px; }
    .ui-icon-power { background-position: 0 -176px; }
    .ui-icon-signal-diag { background-position: -16px -176px; }
    .ui-icon-signal { background-position: -32px -176px; }
    .ui-icon-battery-0 { background-position: -48px -176px; }
    代码太长,楼下还有
      

  8.   

    .ui-icon-battery-1 { background-position: -64px -176px; }
    .ui-icon-battery-2 { background-position: -80px -176px; }
    .ui-icon-battery-3 { background-position: -96px -176px; }
    .ui-icon-circle-plus { background-position: 0 -192px; }
    .ui-icon-circle-minus { background-position: -16px -192px; }
    .ui-icon-circle-close { background-position: -32px -192px; }
    .ui-icon-circle-triangle-e { background-position: -48px -192px; }
    .ui-icon-circle-triangle-s { background-position: -64px -192px; }
    .ui-icon-circle-triangle-w { background-position: -80px -192px; }
    .ui-icon-circle-triangle-n { background-position: -96px -192px; }
    .ui-icon-circle-arrow-e { background-position: -112px -192px; }
    .ui-icon-circle-arrow-s { background-position: -128px -192px; }
    .ui-icon-circle-arrow-w { background-position: -144px -192px; }
    .ui-icon-circle-arrow-n { background-position: -160px -192px; }
    .ui-icon-circle-zoomin { background-position: -176px -192px; }
    .ui-icon-circle-zoomout { background-position: -192px -192px; }
    .ui-icon-circle-check { background-position: -208px -192px; }
    .ui-icon-circlesmall-plus { background-position: 0 -208px; }
    .ui-icon-circlesmall-minus { background-position: -16px -208px; }
    .ui-icon-circlesmall-close { background-position: -32px -208px; }
    .ui-icon-squaresmall-plus { background-position: -48px -208px; }
    .ui-icon-squaresmall-minus { background-position: -64px -208px; }
    .ui-icon-squaresmall-close { background-position: -80px -208px; }
    .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
    .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
    .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
    .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
    .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
    .ui-icon-grip-diagonal-se { background-position: -80px -224px; }然后在路径下添加上以下4张图片
    ui-icons_d8e7f3_256x240.png
    ui-icons_2e83ff_256x240.png
    ui-icons_469bdd_256x240.png
    ui-icons_217bc0_256x240.png这样图标就出来了,效果图如下
      

  9.   

    我的代码是这样的
    jQuery(function($) {
    var grid_selector = "#grid-table";
    var pager_selector = "#grid-pager";

     jQuery(grid_selector).jqGrid({   
      url: 'sysmenu/querySysmenuList.html',  
        datatype: "json",  
                   treeGrid: true,    
                   treeGridModel: 'adjacency',    
                   ExpandColumn : 'name',  
                   colNames:['主键', '路径', '名称', '父Id'],  
                   colModel:[{name : 'mainId',index : 'mainId',hidden:true,key:true, editable:true}, 
                    {name : 'name',index : 'name',width : 150,editable : true},
    {name : 'url',index : 'url',width : 200,editable : true},
    {name : 'parentId',index : 'parentId',editable : true} 
              ],  
                    pager: "true",  
                    jsonReader: {    
                         root: "dataRows",    
                         repeatitems : false    
                    },    
                    treeReader : {    
                         level_field: "level",    
                         parent_id_field: "parentId",    
                         leaf_field: "isLeaf",    
                         expanded_field: "expanded"    
                    },  
                    sortorder: "desc",  
                    caption: "jqGrid test", 
                    height: "auto" 
                    
     }); 返回的json格式是这样的:
    [{"delFlag":"0","expanded":false,"isLeaf":false,"isShow":true,"level":1,"loaded":true,"mainId":"40281e815beda90f015bedcf7102000f","menuIcon":"","name":"计划任务","parentId":"40288ab85cf8276b015cf82debcb005b","permission":"task:schedulejob:list","url":"task/schedulejob"},
    {"delFlag":"0","expanded":false,"isLeaf":false,"isShow":true,"level":1,"loaded":true,"mainId":"40281e815c097acf015c097bcaea0000","menuIcon":"","name":"用户最后在线情况","parentId":"4028ea815a701416015a7075b4f9001f","permission":"sys:userlastonline","url":"sys/lastOnline"},
    {"delFlag":"0","expanded":false,"isLeaf":false,"isShow":true,"level":1,"loaded":true,"mainId":"40281e815c547c32015c54a21e260038","menuIcon":"","name":"生成案列","parentId":"4028ea815a78e9e6015a78f1dc9d0000","permission":"","url":""}}]必须有的字段:expanded、isLeaf、level、parentId(默认是parent)
    不懂的去百度页面代码
      

  10.   

    你好,请问你用ace    treegrid能正常显示了吗?