layui的數據表格展開

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
		<title>layui在線調試</title>
		<link rel="stylesheet" type="text/css" href="layuiadmin/layui/css/layui.css" />
		<style>
			body{margin: 10px;}
    .demo-carousel{height: 400px; line-height: 200px; text-align: center;}
  </style>
	</head>
	<body>

		<table class="layui-hide" id="demo" lay-filter="test"></table>

		<script type="text/html" id="barDemo1">

			<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
		</script>
		<script src="layuiadmin/layui/layui.js" type="text/javascript" charset="utf-8"></script>
		<script>
			layui.config({
				version: '1545041465443' //爲了更新 js 緩存,可忽略
			});
			layui.use(['laydate', 'laypage', 'layer', 'table', 'carousel', 'upload', 'element', 'slider', 'jquery'],
				function() {
					var table = layui.table //表格
					var $ = layui.jquery //表格
					var element=layui.element;
					//執行一個 table 實例
					table.render({
						elem: '#demo',
						height: 670,
						url: 'Consignee.json' //數據接口
							,
						title: '用戶表',
						page: true //開啓分頁
							,
						cols: [
							[ //表頭
								{
									filed: 'v_ID',
									type: 'checkbox',
									fixed: 'left'
								},
								{
									field: 'v_TruckName',
									title: '用戶名',
									minWidth: 100,
									event: 'collapse',
									templet: function(d) {
										return '<div style="position: relative;\n' + '    padding: 0 10px 0 20px;">' + d.username +
											'<i style="left: 0px;" lay-tips="展開" class="layui-icon layui-colla-icon layui-icon-right"></i></div>'
									}
								},
								{
									field: 'experience',
									title: '積分',
									width: 90,
									sort: true
								},
								{
									field: 'sex',
									title: '性別',
									width: 80,
									sort: true
								},
								{
									field: 'score',
									title: '評分',
									width: 80,
									sort: true
								},
								{
									field: 'city',
									title: '城市',
									width: 150
								},
							]
						]
					});

					//監聽工具條
					table.on('tool(test)',
						function(obj) {

							var data = obj.data;
							if (obj.event === 'collapse') {
								var trObj = layui.$(this).parent('tr'); //當前行
								var accordion = true //開啓手風琴,那麼在進行摺疊操作時,始終只會展現當前展開的表格。
								var content = '<table></table>' //內容
								//表格行摺疊方法
								collapseTable({
									elem: trObj,
									accordion: accordion,
									content: content,
									success: function(trObjChildren, index) { //成功回調函數
										//trObjChildren 展開tr層DOM
										//index 當前層索引
										trObjChildren.find('table').attr("id", index);
										trObjChildren.find('table').attr("lay-filter", index);
										table.render({
											elem: "#" + index,
											url: 'Consignee.json',
											limit: 3,
											// id:index,//用於表格重載
											cellMinWidth: 80,
											cols: [
												[{
														field: 'v_ID',
														width: 80,
														title: 'ID',
														sort: true
													},
													{
														field: 'v_TruckName',
														title: '用戶名'
													},
													{
														field: 'sex',
														title: '性別',
														sort: true
													},
													{
														field: 'city',
														title: '城市'
													},
													{
														fixed: 'right',
														width: 80,
														align: 'center',
														toolbar: '#barDemo1'
													}
												]
											]
										});



									}
								});

							}

							if (obj.event === 'detail') {
								var NewValue = new Array();

								str = $(this)[0].text == "查看" ? "提交" : "查看";
								$(this).text(str); // 按鈕被點擊後,在“編輯”和“確定”之間切換

								var tdvalue = $(this).parent().parent().parent().children("td");
								$(this).parent().parent().parent().children("td").each(function(i) { // 獲取當前行的其他單元格
									if (i <tdvalue.length-1) {
										var nodeValue=$(this)[0].attributes[1].nodeValue;
										obj_text = $(this).find("input:text"); // 判斷單元格下是否有文本框
										// 如果沒有文本框,則添加文本框使之可以編輯
										if (!obj_text.length) {
											$(this).html("<input type='text' style='width:50%;' value='" + $(this).text() + "'>");
										}
										// 如果已經存在文本框,則將其顯示爲文本框修改的值
										else {
											$(this).html("<div class='layui-table-cell laytable-cell-"+nodeValue+"'>"+obj_text.val()+"</div>");
											NewValue[i] = obj_text.val();
											element.init();
										}
									}
									
								});
								var id='',Name='',log1='';
								if ($(this)[0].text == '提交') {
									return;
								} else if ($(this)[0].text == '查看') {
									id=NewValue[0];
									Name=NewValue[1];
									log1=NewValue[2];
									console.log(NewValue);
									
								}
							}
						});

					function collapseTable(options) {
						var trObj = options.elem;
						if (!trObj) return;
						var accordion = options.accordion,
							success = options.success,
							content = options.content || '';
						var tableView = trObj.parents('.layui-table-view'); //當前表格視圖
						var id = tableView.attr('lay-id'); //當前表格標識
						var index = trObj.data('index'); //當前行索引
						var leftTr = tableView.find('.layui-table-fixed.layui-table-fixed-l tr[data-index="' + index + '"]'); //左側當前固定行
						var rightTr = tableView.find('.layui-table-fixed.layui-table-fixed-r tr[data-index="' + index + '"]'); //右側當前固定行
						var colspan = trObj.find('td').length; //獲取合併長度
						var trObjChildren = trObj.next(); //展開行Dom
						var indexChildren = id + '-' + index + '-children'; //展開行索引
						var leftTrChildren = tableView.find('.layui-table-fixed.layui-table-fixed-l tr[data-index="' + indexChildren +
							'"]'); //左側展開固定行
						var rightTrChildren = tableView.find('.layui-table-fixed.layui-table-fixed-r tr[data-index="' + indexChildren +
							'"]'); //右側展開固定行
						var lw = leftTr.width() + 15; //左寬
						var rw = rightTr.width() + 15; //右寬
						//不存在就創建展開行
						if (trObjChildren.data('index') != indexChildren) {
							//裝載HTML元素
							var tr = '<tr data-index="' + indexChildren + '"><td colspan="' + colspan +
								'"><div style="height: auto;padding-left:' + lw + 'px;padding-right:' + rw + 'px" class="layui-table-cell">' +
								content + '</div></td></tr>';
							trObjChildren = trObj.after(tr).next().hide(); //隱藏展開行
							var fixTr = '<tr data-index="' + indexChildren + '"></tr>'; //固定行
							leftTrChildren = leftTr.after(fixTr).next().hide(); //左固定
							rightTrChildren = rightTr.after(fixTr).next().hide(); //右固定
						}
						//展開|摺疊箭頭圖標
						trObj.find('td[lay-event="collapse"] i.layui-colla-icon').toggleClass("layui-icon-right layui-icon-down");
						//顯示|隱藏展開行
						trObjChildren.toggle();
						//開啓手風琴摺疊和摺疊箭頭
						if (accordion) {
							trObj.siblings().find('td[lay-event="collapse"] i.layui-colla-icon').removeClass("layui-icon-down").addClass(
								"layui-icon-right");
							trObjChildren.siblings('[data-index$="-children"]').hide(); //展開
							rightTrChildren.siblings('[data-index$="-children"]').hide(); //左固定
							leftTrChildren.siblings('[data-index$="-children"]').hide(); //右固定
						}
						success(trObjChildren, indexChildren); //回調函數
						heightChildren = trObjChildren.height(); //展開高度固定
						rightTrChildren.height(heightChildren + 115).toggle(); //左固定
						leftTrChildren.height(heightChildren + 115).toggle(); //右固定
					}

				});
		</script>
	</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章