1                     <table id="Table1" class="easyui-datagrid" title="标题" style="width: 100%;"
2                         data-options="fitColumns:true,rownumbers:true,singleSelect:true,striped:true,collapsible:true,pagination:true,pageSize:3,pageList:[3,6,9],url:'ajax路径'">
3                         <thead>
4                             <tr>
5                                 <th></th>
6                             </tr>
7                         </thead>
8                     </table>

上面是最基本的主表 下面是对应的子表

1         <table id="Table_dg" class="easyui-datagrid"
2             data-options="fitColumns:true,rownumbers:true,singleSelect:true,striped:true,collapsible:true,url:'ajax路径'">
3             <thead>
4                 <tr>
5                     <th data-options="field:'字段名'"></th>
6                 </tr>
7             </thead>
8         </table>

这里用到了一个插件 需要引入一个js包  jquery-easyui-datagridview

接下来是对应的js代码

 1             $('Table1').datagrid({
 2                 onSelect: function (index, rowdata) {//用户选择一行时触发,index下标 rowdata被选中行数据 singleSelect 只能选中一行
 3
 4                     //获取到子表的数据
 5                     $('#Table_dg').datagrid({
 6                         view: view,//展示视图
 7                         url: '',//ajax请求的地址
 8                         queryParams: {//需要传递的多个参数
 9
10                         },
11                         detailFormatter: function (index, row) {//扩展行展示数据 告诉用户 具体返回是的是个什么样子的容器
12                             return '<div></div>';
13                         },
14                         onLoadSuccess: function () {//当数据载入成功时触发
15                             var row = $("#Table_dg").datagrid("getRows");//返回当前页的记录
16                             for (var r = 0; r < row.length; r++) {
17                                 $("#Table_dg").datagrid("expandRow", r);//展开对应行
18                             }
19                             $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
20                         },
21                         onExpandRow: function (index, row) {//多层列表定义  
22                             var ddv = $(this).datagrid('getRowDetail', index).find('刚才在扩展行写的内容');//获取到扩展行的容器
23                             ddv.datagrid({//获取到子表的从表的数据
24                                 queryParams: {//传递的多个参数
25
26                                 },
27                                 url: "",//ajax 访问的地址
28                                 fitColumns: true,//自动填满宽度
29                                 singleSelect: true,//只能选中单行
30                                 rownumbers: true,//排序
31                                 loadMsg: '',//加载中提示信息
32                                 height: 'auto',//高度自适应
33                                 columns: [[//对应列绑定数据
34                                 { field: '后台传过来的对应的数据', title: '抬头' },
35                                 ]],
36                                 onResize: function () {//该事件获取高度宽度 可进行调整
37                                     $('#Table_dg').datagrid('fixDetailRowHeight', index);
38                                     $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
39                                 },
40                                 onLoadSuccess: function () {//数据载入成功触发
41                                     $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
42                                     setTimeout(function () {
43                                         $('#Table_dg').datagrid('fixDetailRowHeight', index);
44                                     }, 0);
45                                 }
46                             });
47                             $('#Table_dg').datagrid('fixDetailRowHeight', index);
48                             $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
49                         }
50                     });
51                 }
52             });

对于展开的多层表格进行单行选择操作

 1             $("按钮").click(function () {
 2                 var details = [];
 3                 var detail;
 4                 for (var i = 0; i < $('.ddv').length; i++) {
 5                     detail = $('.ddv').eq(i).datagrid('getSelected');//通过判断每个表格选中行的值 
 6                     if (detail != null) {
 7                         details.push(detail);//将被选中的行的值填充进数组中
 8                     }
 9                 }
10                 if (details.length > 1) {//如果数组长度大于1 说明有多条数据被选中 提示用户 以及刷新选中状态
11                     alert("只能选取一条数据");
12                     //自动取消选择状态
13                     $('#Table_dg').datagrid('rejectChanges');
14                     editIndex = undefined;
15                 }
16                 else {//一条数据
17                     var row = details[0];
18                     if (row) {
19                       //弹窗什么的
20                     }
21                     else alert("请选择一条记录进行编辑!");
22                 }
23             });

类似于下图 信息不方便透露

下面的从表是可以像树状图那种 折叠展开的 这里设置的是 多个从表只能单选一行数据

02-12 04:07