EasyUI 网格 一主多从 从表使用自定义树状展开
<table id="Table1" class="easyui-datagrid" title="标题" style="width: 100%;"
data-options="fitColumns:true,rownumbers:true,singleSelect:true,striped:true,collapsible:true,pagination:true,pageSize:3,pageList:[3,6,9],url:'ajax路径'">
<thead>
<tr>
<th></th>
</tr>
</thead>
</table>
上面是最基本的主表 下面是对应的子表
<table id="Table_dg" class="easyui-datagrid"
data-options="fitColumns:true,rownumbers:true,singleSelect:true,striped:true,collapsible:true,url:'ajax路径'">
<thead>
<tr>
<th data-options="field:'字段名'"></th>
</tr>
</thead>
</table>
这里用到了一个插件 需要引入一个js包 jquery-easyui-datagridview
接下来是对应的js代码
             $('Table1').datagrid({
                 onSelect: function (index, rowdata) {//用户选择一行时触发,index下标 rowdata被选中行数据 singleSelect 只能选中一行
                     //获取到子表的数据
                     $('#Table_dg').datagrid({
                         view: view,//展示视图
                         url: '',//ajax请求的地址
                         queryParams: {//需要传递的多个参数
                         },
                         detailFormatter: function (index, row) {//扩展行展示数据 告诉用户 具体返回是的是个什么样子的容器
                             return '<div></div>';
                         },
                         onLoadSuccess: function () {//当数据载入成功时触发
                             var row = $("#Table_dg").datagrid("getRows");//返回当前页的记录
                             for (var r = 0; r < row.length; r++) {
                                 $("#Table_dg").datagrid("expandRow", r);//展开对应行
                             }
                             $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
                         },
                         onExpandRow: function (index, row) {//多层列表定义
                             var ddv = $(this).datagrid('getRowDetail', index).find('刚才在扩展行写的内容');//获取到扩展行的容器
                             ddv.datagrid({//获取到子表的从表的数据
                                 queryParams: {//传递的多个参数
                                 },
                                 url: "",//ajax 访问的地址
                                 fitColumns: true,//自动填满宽度
                                 singleSelect: true,//只能选中单行
                                 rownumbers: true,//排序
                                 loadMsg: '',//加载中提示信息
                                 height: 'auto',//高度自适应
                                 columns: [[//对应列绑定数据
                                 { field: '后台传过来的对应的数据', title: '抬头' },
                                 ]],
                                 onResize: function () {//该事件获取高度宽度 可进行调整
                                     $('#Table_dg').datagrid('fixDetailRowHeight', index);
                                     $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
                                 },
                                 onLoadSuccess: function () {//数据载入成功触发
                                     $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
                                     setTimeout(function () {
                                         $('#Table_dg').datagrid('fixDetailRowHeight', index);
                                     }, 0);
                                 }
                             });
                             $('#Table_dg').datagrid('fixDetailRowHeight', index);
                             $('#Table_dg').datagrid('collapseGroup');//自动修正高度,但是会出BUG,所以加上一个折叠的动作,直接样式就fix完毕
                         }
                     });
                 }
             });
对于展开的多层表格进行单行选择操作
             $("按钮").click(function () {
                 var details = [];
                 var detail;
                 for (var i = 0; i < $('.ddv').length; i++) {
                     detail = $('.ddv').eq(i).datagrid('getSelected');//通过判断每个表格选中行的值
                     if (detail != null) {
                         details.push(detail);//将被选中的行的值填充进数组中
                     }
                 }
                 if (details.length > 1) {//如果数组长度大于1 说明有多条数据被选中 提示用户 以及刷新选中状态
                     alert("只能选取一条数据");
                     //自动取消选择状态
                     $('#Table_dg').datagrid('rejectChanges');
                     editIndex = undefined;
                 }
                 else {//一条数据
                     var row = details[0];
                     if (row) {
                       //弹窗什么的
                     }
                     else alert("请选择一条记录进行编辑!");
                 }
             });
类似于下图 信息不方便透露

下面的从表是可以像树状图那种 折叠展开的 这里设置的是 多个从表只能单选一行数据
EasyUI 网格 一主多从 从表使用自定义树状展开的更多相关文章
- Mysql增加主键或者更改表的列为主键的sql语句
		... 
- EasyUI + ajax + treegrid/datagrid 接收 json 数据,显示树状/网状表结构
		最后一更了,时间间隔有点久了~~ EasyUI作为一个成熟的前端框架,封装了ajax,对于数据的处理配合datagrid组件的使用,使其非常适合后台管理界面的开发(目前来说界面有点过时了). 通过aj ... 
- Oracle根据主键获取对应表,Oracle根据外键获取相关表
		Oracle根据主键获取对应表 select * from user_constraints a, USER_CONS_COLUMNS b where a.CONSTRAINT_TYPE = 'P' ... 
- SQL查找数据库中所有没有主键的数据表脚本
		--SQL查找数据库中所有没有主键的数据表脚本 --运行脚本后在消息中可能会显示下面现象中的一种:--(1)数据库中所有数据表都有主键(则证明所有数据表都有主键)--(2)当前数据表[数据表名]没有主 ... 
- 主外键多表查询demo
		https://www.cnblogs.com/DragonFire/p/6949767.html mySQL练习-主外键多表查询 MySQL练习-主外键多表查询 练习: 1.建立表关系: 请创建如下 ... 
- ShardingJdbc-分表;分库;分库分表;读写分离;一主多从+分表;一主多从+分库分表;公共表;数据脱敏;分布式事务
		目录 创建项目 分表 导包 表结构 Yml 分库 Yml Java 分库分表 数据库 Yml 读写分离 数据库 Yml 其他 只请求主库 读写分离判断逻辑代码 一主多从+分表 Yml 一主多从+分库分 ... 
- MySQL递归查询树状表的子节点、父节点具体实现
		mysql版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算 ... 
- openerp学习笔记 对象间关系【多对一(一对一)、一对多(主细结构)、多对多关系、自关联关系(树状结构)】
		1.多对一(一对一)关系:采购单与供应商之间的关系 'partner_id':fields.many2one('res.partner', 'Supplier', required=True, sta ... 
- 基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)
		先从后台讲起 1.表的设计 parent_id就是另外一条记录的id,无限极表设计可以参考 http://m.blog.csdn.net/Rookie_Or_Veteran/article/deta ... 
随机推荐
- python第四课
			1.lambda()函数 可以直接定义一个函数,简化用def的定义. >>> func=lambda x,y:x+y>>> print(func(3,4))7> ... 
- 使用Scrapyd部署Scrapy爬虫到远程服务器上
			1.准备好爬虫程序 2.修改项目配置 找到项目配置文件scrapy.cnf,将里面注释掉的url解开来 本代码需要连接数据库,因此需要修改对应的数据库配置 其实就是将里面的数据库地址进行修改,变成远程 ... 
- js 事件的自定义函数
			转自:http://www.zhangxinxu.com/study/201203/js-custom-dom-events.html http://stylechen.com/trigger.htm ... 
- 2019-8-31-dotnet-新项目格式与对应框架预定义的宏
			title author date CreateTime categories dotnet 新项目格式与对应框架预定义的宏 lindexi 2019-08-31 16:55:58 +0800 201 ... 
- openldap 2.4 centos7 常用配置
			新版的openldap弃用了sldap.conf配置文件,引入一种动态配置,所以尽量不要直接修改配文件 如果直接修改了配置文件可以用slaptest -u命令检查 1.安装openldap,可能需要e ... 
- CSS作业问题 内容回顾
			CSS作业问题 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ... 
- js的模块化写法
			记得前两天自己写一个动画首页,动画很复杂,我用的fullpage虽然相对比较简单,但是每个页面的animation各有差异,需要相对控制,估计有上千行的js代码,写的心情乱糟糟的. 如何让代码量巨大, ... 
- 关于springmvc 只能在index.jsp页面显示图片的处理办法jsp页面无法显示图片
			首先,已经配置好了mvc对静态资源的处理 只有index,jsp可以显示图片 其他页面同样的代码则不显示 后来折腾了半天,发现 index是static的父目录的级别文件 可以向下访问 但是其他的js ... 
- FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
			自从继承了hibernate ,全都是些奇葩问题. 努力解决中,先发布,以备忘 
- swagger暴露程序接口文档
			Swagger2是一个帮助用户.团队.企业快速.高效.准确地生产API服务的工具组件,同时还提供了部分测试功能,它的官方网站是https://swagger.io/. 1.引入Maven <de ... 
