init
This commit is contained in:
16
public/frontend/layui-main/docs/table/examples/autoRender.md
Executable file
16
public/frontend/layui-main/docs/table/examples/autoRender.md
Executable file
@@ -0,0 +1,16 @@
|
||||
<table class="layui-table" lay-data="{height:315, url:'/static/2.8/json/table/user.json', page:true}" id="ID-table-demo-init">
|
||||
<thead>
|
||||
<tr>
|
||||
<th lay-data="{field:'id', width:80, sort: true}">ID</th>
|
||||
<th lay-data="{field:'username', width:80}">用户名</th>
|
||||
<th lay-data="{field:'sex', width:80, sort: true}">性别</th>
|
||||
<th lay-data="{field:'city'}">城市</th>
|
||||
<th lay-data="{field:'sign'}">签名</th>
|
||||
<th lay-data="{field:'experience', sort: true}">积分</th>
|
||||
<th lay-data="{field:'score', sort: true}">评分</th>
|
||||
<th lay-data="{field:'classify'}">职业</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
<!-- import layui -->
|
||||
83
public/frontend/layui-main/docs/table/examples/css.md
Executable file
83
public/frontend/layui-main/docs/table/examples/css.md
Executable file
@@ -0,0 +1,83 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>table 自定义样式 - Layui</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="{{= d.layui.cdn.css }}" rel="stylesheet">
|
||||
<style>
|
||||
/* 自定义样式 */
|
||||
.layui-table-testcss .layui-table-header,
|
||||
.layui-table-testcss thead tr{background-color: #F8FCF9; color: #16BAAA}
|
||||
.layui-form-testcss > div{margin-bottom: 6px;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div style="padding: 16px;">
|
||||
<table class="layui-hide" id="ID-table-demo-css"></table>
|
||||
</div>
|
||||
<script type="text/html" id="ID-table-demo-css-user">{{!
|
||||
<ul>
|
||||
<li><strong>ID:</strong> {{= d.id }} </li>
|
||||
<li><strong>用户:</strong> {{= d.username }} </li>
|
||||
<li><strong>性别:</strong> {{= d.sex }} </li>
|
||||
<li><strong>城市:</strong> {{= d.city }} </li>
|
||||
</ul>
|
||||
!}}</script>
|
||||
<script type="text/html" id="ID-table-demo-css-tool">{{!
|
||||
<div class="layui-form layui-form-testcss">
|
||||
<div class="layui-input-wrap">
|
||||
<input name="AAA" value="{{= d.AAA || '' }}" lay-affix="clear" placeholder="表单 1" class="layui-input" >
|
||||
</div>
|
||||
<div class="layui-input-wrap">
|
||||
<input name="BBB" value="{{= d.BBB || '' }}" lay-affix="clear" placeholder="表单 2" class="layui-input" >
|
||||
</div>
|
||||
<div>
|
||||
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="demo-css-submit">确认</button>
|
||||
</div>
|
||||
</div>
|
||||
!}}</script>
|
||||
|
||||
<script src="{{= d.layui.cdn.js }}"></script>
|
||||
<script>
|
||||
layui.use(['table'], function(){
|
||||
var table = layui.table;
|
||||
var form = layui.form;
|
||||
|
||||
// 创建渲染实例
|
||||
table.render({
|
||||
elem: '#ID-table-demo-css',
|
||||
url:'/static/2.8/json/table/demo1.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
page: true,
|
||||
height: 'full-35',
|
||||
lineStyle: 'height: 151px;', // 定义表格的多行样式
|
||||
css: [ // 直接给当前表格主容器重置 css 样式
|
||||
'.layui-table-page{text-align: center;}' // 让分页栏居中
|
||||
].join(''),
|
||||
className: 'layui-table-testcss', // 用于给表格主容器追加 css 类名
|
||||
cols: [[
|
||||
{field:'username', width:160, title: '用户', templet: '#ID-table-demo-css-user'},
|
||||
// 设置单元格样式
|
||||
{field:'sign', minWidth:100, title: '签名', style:'color: #000;'},
|
||||
{width:160, title: '操作', templet: '#ID-table-demo-css-tool'}
|
||||
]]
|
||||
});
|
||||
|
||||
// 表单提交
|
||||
form.on('submit(demo-css-submit)', function(data){
|
||||
var field = data.field; // 获取表单字段值
|
||||
// 显示填写结果,仅作演示用
|
||||
layer.alert(JSON.stringify(field), {
|
||||
title: '当前填写的字段值'
|
||||
});
|
||||
// 此处可执行 Ajax 等操作
|
||||
// …
|
||||
return false; // 阻止默认 form 跳转
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
85
public/frontend/layui-main/docs/table/examples/data.md
Executable file
85
public/frontend/layui-main/docs/table/examples/data.md
Executable file
@@ -0,0 +1,85 @@
|
||||
<table class="layui-hide" id="ID-table-demo-data"></table>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use('table', function(){
|
||||
var table = layui.table;
|
||||
|
||||
// 已知数据渲染
|
||||
var inst = table.render({
|
||||
elem: '#ID-table-demo-data',
|
||||
cols: [[ //标题栏
|
||||
{field: 'id', title: 'ID', width: 80, sort: true},
|
||||
{field: 'username', title: '用户', width: 120},
|
||||
{field: 'sign', title: '签名', minWidth: 160},
|
||||
{field: 'sex', title: '性别', width: 80},
|
||||
{field: 'city', title: '城市', width: 100},
|
||||
{field: 'experience', title: '积分', width: 80, sort: true}
|
||||
]],
|
||||
data: [{ // 赋值已知数据
|
||||
"id": "10001",
|
||||
"username": "张三1",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "116"
|
||||
}, {
|
||||
"id": "10002",
|
||||
"username": "张三2",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "12",
|
||||
"LAY_CHECKED": true
|
||||
}, {
|
||||
"id": "10003",
|
||||
"username": "张三3",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "65"
|
||||
}, {
|
||||
"id": "10004",
|
||||
"username": "张三4",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "777"
|
||||
}, {
|
||||
"id": "10005",
|
||||
"username": "张三5",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "86"
|
||||
}, {
|
||||
"id": "10006",
|
||||
"username": "张三6",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "12"
|
||||
}, {
|
||||
"id": "10007",
|
||||
"username": "张三7",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "16"
|
||||
}, {
|
||||
"id": "10008",
|
||||
"username": "张三8",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "人生恰似一场修行",
|
||||
"experience": "106"
|
||||
}],
|
||||
//skin: 'line', // 表格风格
|
||||
//even: true,
|
||||
page: true, // 是否显示分页
|
||||
limits: [5, 10, 15],
|
||||
limit: 5 // 每页默认显示的数量
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
371
public/frontend/layui-main/docs/table/examples/demo.md
Executable file
371
public/frontend/layui-main/docs/table/examples/demo.md
Executable file
@@ -0,0 +1,371 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>table 组件综合演示 - Layui</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="{{= d.layui.cdn.css }}" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
本「综合演示」包含:自定义头部工具栏、获取表格数据、表格重载、自定义模板、单双行显示、单元格编辑、自定义底部分页栏、表格相关事件与操作、与其他组件的结合等相对常用的功能,以便快速掌握 table 组件的使用。
|
||||
-->
|
||||
|
||||
<div style="padding: 16px;">
|
||||
<table class="layui-hide" id="test" lay-filter="test"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">{{!
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="getData">获取当前页数据</button>
|
||||
<button class="layui-btn layui-btn-sm" id="dropdownButton">
|
||||
下拉按钮
|
||||
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-sm layui-bg-blue" id="reloadTest">
|
||||
重载测试
|
||||
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
||||
</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-primary" id="rowMode">
|
||||
<span>{{= d.lineStyle ? '多行' : '单行' }}模式</span>
|
||||
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
||||
</button>
|
||||
</div>
|
||||
!}}</script>
|
||||
|
||||
<script type="text/html" id="barDemo">
|
||||
<div class="layui-clear-space">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-xs" lay-event="more">
|
||||
更多
|
||||
<i class="layui-icon layui-icon-down"></i>
|
||||
</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script src="{{= d.layui.cdn.js }}"></script>
|
||||
<script>
|
||||
layui.use(['table', 'dropdown'], function(){
|
||||
var table = layui.table;
|
||||
var dropdown = layui.dropdown;
|
||||
|
||||
// 创建渲染实例
|
||||
table.render({
|
||||
elem: '#test',
|
||||
url: '/static/2.8/json/table/demo1.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
toolbar: '#toolbarDemo',
|
||||
defaultToolbar: ['filter', 'exports', 'print', {
|
||||
title: '提示',
|
||||
layEvent: 'LAYTABLE_TIPS',
|
||||
icon: 'layui-icon-tips'
|
||||
}],
|
||||
height: 'full-35', // 最大高度减去其他容器已占有的高度差
|
||||
css: [ // 重设当前表格样式
|
||||
'.layui-table-tool-temp{padding-right: 145px;}'
|
||||
].join(''),
|
||||
cellMinWidth: 80,
|
||||
totalRow: true, // 开启合计行
|
||||
page: true,
|
||||
cols: [[
|
||||
{type: 'checkbox', fixed: 'left'},
|
||||
{field:'id', fixed: 'left', width:80, title: 'ID', sort: true, totalRowText: '合计:'},
|
||||
{field:'username', width:80, title: '用户'},
|
||||
{field:'email', title:'邮箱 <i class="layui-icon layui-icon-tips layui-font-14" lay-event="email-tips" title="该字段开启了编辑功能" style="margin-left: 5px;"></i>', fieldTitle: '邮箱', hide: 0, width:150, expandedMode: 'tips', edit: 'text'},
|
||||
{field:'sex', width:80, title: '性别', sort: true},
|
||||
{field:'sign', title: '签名', edit: 'textarea', minWidth: 260, expandedWidth: 260, totalRow: '{{!人物:<span class="layui-badge-rim">唐代:{{= d.TOTAL_ROW.era.tang }} </span> <span class="layui-badge-rim">宋代:{{= d.TOTAL_ROW.era.song }}</span> <span class="layui-badge-rim">现代:{{= d.TOTAL_ROW.era.xian }}</span>!}}'},
|
||||
{field:'experience', width: 100, title: '积分', sort: true, totalRow: '{{!{{= d.TOTAL_NUMS }} 😊!}}'},
|
||||
{field:'checkin', title:'打卡', width: 100, sort: true, totalRow: '{{!{{= parseInt(d.TOTAL_NUMS) }} 次!}}'},
|
||||
{field:'ip', title:'IP', width: 120},
|
||||
{field:'joinTime', title:'加入时间', width: 120},
|
||||
{fixed: 'right', title:'操作', width: 134, minWidth: 125, toolbar: '#barDemo'}
|
||||
]],
|
||||
done: function(){
|
||||
var id = this.id;
|
||||
|
||||
// 下拉按钮测试
|
||||
dropdown.render({
|
||||
elem: '#dropdownButton', // 可绑定在任意元素中,此处以上述按钮为例
|
||||
data: [{
|
||||
id: 'add',
|
||||
title: '添加'
|
||||
},{
|
||||
id: 'update',
|
||||
title: '编辑'
|
||||
},{
|
||||
id: 'delete',
|
||||
title: '删除'
|
||||
}],
|
||||
// 菜单被点击的事件
|
||||
click: function(obj){
|
||||
var checkStatus = table.checkStatus(id)
|
||||
var data = checkStatus.data; // 获取选中的数据
|
||||
|
||||
switch(obj.id){
|
||||
case 'add':
|
||||
layer.open({
|
||||
title: '添加',
|
||||
type: 1,
|
||||
area: ['80%','80%'],
|
||||
content: '<div style="padding: 16px;">自定义表单元素</div>'
|
||||
});
|
||||
break;
|
||||
case 'update':
|
||||
if(data.length !== 1) return layer.msg('请选择一行');
|
||||
layer.open({
|
||||
title: '编辑',
|
||||
type: 1,
|
||||
area: ['80%','80%'],
|
||||
content: '<div style="padding: 16px;">自定义表单元素</div>'
|
||||
});
|
||||
break;
|
||||
case 'delete':
|
||||
if(data.length === 0){
|
||||
return layer.msg('请选择一行');
|
||||
}
|
||||
layer.msg('delete event');
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 重载测试
|
||||
dropdown.render({
|
||||
elem: '#reloadTest', // 可绑定在任意元素中,此处以上述按钮为例
|
||||
data: [{
|
||||
id: 'reload',
|
||||
title: '重载'
|
||||
},{
|
||||
id: 'reload-deep',
|
||||
title: '重载 - 参数叠加'
|
||||
},{
|
||||
id: 'reloadData',
|
||||
title: '仅重载数据'
|
||||
},{
|
||||
id: 'reloadData-deep',
|
||||
title: '仅重载数据 - 参数叠加'
|
||||
}],
|
||||
// 菜单被点击的事件
|
||||
click: function(obj){
|
||||
switch(obj.id){
|
||||
case 'reload':
|
||||
// 重载 - 默认(参数重置)
|
||||
table.reload('test', {
|
||||
where: {
|
||||
abc: '123456',
|
||||
//test: '新的 test2',
|
||||
//token: '新的 token2'
|
||||
},
|
||||
/*{{!
|
||||
cols: [[ // 重置表头
|
||||
{type: 'checkbox', fixed: 'left'},
|
||||
{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true, totalRowText: '合计:'},
|
||||
{field:'sex', title:'性别', width:80, edit: 'text', sort: true},
|
||||
{field:'experience', title:'积分', width:80, sort: true, totalRow: true, templet: '<div>{{= d.experience }} 分</div>'},
|
||||
{field:'logins', title:'登入次数', width:100, sort: true, totalRow: true},
|
||||
{field:'joinTime', title:'加入时间', width:120}
|
||||
]]
|
||||
!}}*/
|
||||
});
|
||||
break;
|
||||
case 'reload-deep':
|
||||
// 重载 - 深度(参数叠加)
|
||||
table.reload('test', {
|
||||
where: {
|
||||
abc: 123,
|
||||
test: '新的 test1'
|
||||
},
|
||||
//defaultToolbar: ['print'], // 重载头部工具栏右侧图标
|
||||
//cols: ins1.config.cols
|
||||
}, true);
|
||||
break;
|
||||
case 'reloadData':
|
||||
// 数据重载 - 参数重置
|
||||
table.reloadData('test', {
|
||||
where: {
|
||||
abc: '123456',
|
||||
//test: '新的 test2',
|
||||
//token: '新的 token2'
|
||||
},
|
||||
scrollPos: 'fixed', // 保持滚动条位置不变 - v2.7.3 新增
|
||||
height: 2000, // 测试无效参数(即与数据无关的参数设置无效,此处以 height 设置无效为例)
|
||||
//url: '404',
|
||||
//page: {curr: 1, limit: 30} // 重新指向分页
|
||||
});
|
||||
break;
|
||||
case 'reloadData-deep':
|
||||
// 数据重载 - 参数叠加
|
||||
table.reloadData('test', {
|
||||
where: {
|
||||
abc: 123,
|
||||
test: '新的 test1'
|
||||
}
|
||||
}, true);
|
||||
break;
|
||||
}
|
||||
layer.msg('可观察 Network 请求参数的变化');
|
||||
}
|
||||
});
|
||||
|
||||
// 行模式
|
||||
dropdown.render({
|
||||
elem: '#rowMode',
|
||||
data: [{
|
||||
id: 'default-row',
|
||||
title: '单行模式(默认)'
|
||||
},{
|
||||
id: 'multi-row',
|
||||
title: '多行模式'
|
||||
}],
|
||||
// 菜单被点击的事件
|
||||
click: function(obj){
|
||||
var checkStatus = table.checkStatus(id)
|
||||
var data = checkStatus.data; // 获取选中的数据
|
||||
|
||||
switch(obj.id){
|
||||
case 'default-row':
|
||||
table.reload('test', {
|
||||
lineStyle: null // 恢复单行
|
||||
});
|
||||
|
||||
layer.msg('已设为单行');
|
||||
break;
|
||||
case 'multi-row':
|
||||
table.reload('test', {
|
||||
// 设置行样式,此处以设置多行高度为例。若为单行,则没必要设置改参数 - 注:v2.7.0 新增
|
||||
lineStyle: 'height: 95px;'
|
||||
});
|
||||
layer.msg('即通过设置 lineStyle 参数可开启多行');
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
error: function(res, msg){
|
||||
console.log(res, msg)
|
||||
}
|
||||
});
|
||||
|
||||
// 工具栏事件
|
||||
table.on('toolbar(test)', function(obj){
|
||||
var id = obj.config.id;
|
||||
var checkStatus = table.checkStatus(id);
|
||||
var othis = lay(this);
|
||||
|
||||
switch(obj.event){
|
||||
case 'getCheckData':
|
||||
var data = checkStatus.data;
|
||||
layer.alert(layui.util.escape(JSON.stringify(data)));
|
||||
break;
|
||||
case 'getData':
|
||||
var getData = table.getData(id);
|
||||
console.log(getData);
|
||||
layer.alert(layui.util.escape(JSON.stringify(getData)));
|
||||
break;
|
||||
case 'LAYTABLE_TIPS':
|
||||
layer.alert('自定义工具栏图标按钮');
|
||||
break;
|
||||
};
|
||||
});
|
||||
|
||||
// 表头自定义元素工具事件 --- 2.8.8+
|
||||
table.on('colTool(test)', function(obj){
|
||||
var event = obj.event;
|
||||
console.log(obj);
|
||||
if(event === 'email-tips'){
|
||||
layer.alert(layui.util.escape(JSON.stringify(obj.col)), {
|
||||
title: '当前列属性配置项'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 触发单元格工具事件
|
||||
table.on('tool(test)', function(obj){ // 双击 toolDouble
|
||||
var data = obj.data; // 获得当前行数据
|
||||
// console.log(obj)
|
||||
if(obj.event === 'edit'){
|
||||
layer.open({
|
||||
title: '编辑 - id:'+ data.id,
|
||||
type: 1,
|
||||
area: ['80%','80%'],
|
||||
content: '<div style="padding: 16px;">自定义表单元素</div>'
|
||||
});
|
||||
} else if(obj.event === 'more'){
|
||||
// 更多 - 下拉菜单
|
||||
dropdown.render({
|
||||
elem: this, // 触发事件的 DOM 对象
|
||||
show: true, // 外部事件触发即显示
|
||||
data: [{
|
||||
title: '查看',
|
||||
id: 'detail'
|
||||
},{
|
||||
title: '删除',
|
||||
id: 'del'
|
||||
}],
|
||||
click: function(menudata){
|
||||
if(menudata.id === 'detail'){
|
||||
layer.msg('查看操作,当前行 ID:'+ data.id);
|
||||
} else if(menudata.id === 'del'){
|
||||
layer.confirm('真的删除行 [id: '+ data.id +'] 么', function(index){
|
||||
obj.del(); // 删除对应行(tr)的DOM结构
|
||||
layer.close(index);
|
||||
// 向服务端发送删除指令
|
||||
});
|
||||
}
|
||||
},
|
||||
align: 'right', // 右对齐弹出
|
||||
style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' // 设置额外样式
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
// 触发表格复选框选择
|
||||
table.on('checkbox(test)', function(obj){
|
||||
console.log(obj)
|
||||
});
|
||||
|
||||
// 触发表格单选框选择
|
||||
table.on('radio(test)', function(obj){
|
||||
console.log(obj)
|
||||
});
|
||||
|
||||
// 行单击事件
|
||||
table.on('row(test)', function(obj){
|
||||
//console.log(obj);
|
||||
//layer.closeAll('tips');
|
||||
});
|
||||
// 行双击事件
|
||||
table.on('rowDouble(test)', function(obj){
|
||||
console.log(obj);
|
||||
});
|
||||
|
||||
// 单元格编辑事件
|
||||
table.on('edit(test)', function(obj){
|
||||
var field = obj.field; // 得到字段
|
||||
var value = obj.value; // 得到修改后的值
|
||||
var data = obj.data; // 得到所在行所有键值
|
||||
|
||||
// 值的校验
|
||||
if(field === 'email'){
|
||||
if(!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(obj.value)){
|
||||
layer.tips('输入的邮箱格式不正确,请重新编辑', this, {tips: 1});
|
||||
return obj.reedit(); // 重新编辑 -- v2.8.0 新增
|
||||
}
|
||||
}
|
||||
|
||||
// 编辑后续操作,如提交更新请求,以完成真实的数据更新
|
||||
// …
|
||||
layer.msg('编辑成功', {icon: 1});
|
||||
|
||||
// 其他更新操作
|
||||
var update = {};
|
||||
update[field] = value;
|
||||
obj.update(update);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
181
public/frontend/layui-main/docs/table/examples/editModes.md
Executable file
181
public/frontend/layui-main/docs/table/examples/editModes.md
Executable file
@@ -0,0 +1,181 @@
|
||||
<table class="layui-hide" id="ID-table-demo-editmodes"></table>
|
||||
{{!<!-- 原生 select 模板(推荐) -->
|
||||
<script type="text/html" id="TPL-select-primary">
|
||||
{{# var cityList = d.cityList || ["北京","上海","广州","城市-1"]; }}
|
||||
<select name="city" class="layui-border select-demo-primary" lay-ignore>
|
||||
<option value="">原生 select</option>
|
||||
{{# layui.each(cityList, function(i, v){ }}
|
||||
<option value="{{= v }}" {{= v === d.city ? 'selected' : '' }}>{{= v }}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
<!-- layui select 在 table 中使用(不推荐。因为当 select 出现在 table 底部时,可能会撑起多余高度) -->
|
||||
<script type="text/html" id="TPL-select-city">
|
||||
{{# var cityList = d.cityList || ["北京","上海","广州","城市-1"]; }}
|
||||
<select name="city" lay-filter="select-demo">
|
||||
<option value="">select 方式</option>
|
||||
{{# layui.each(cityList, function(i, v){ }}
|
||||
<option value="{{= v }}" {{= v === d.city ? 'selected' : '' }}>{{= v }}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
<!-- 推荐 -->
|
||||
<script type="text/html" id="TPL-dropdpwn-demo">
|
||||
<button class="layui-btn layui-btn-primary dropdpwn-demo">
|
||||
<span>{{= d.sex || '保密' }}</span>
|
||||
<i class="layui-icon layui-icon-down layui-font-12"></i>
|
||||
</button>
|
||||
</script>
|
||||
<!-- laydate -->
|
||||
<script type="text/html" id="TPL-laydate-demo">
|
||||
<input class="layui-input laydate-demo" placeholder="选择日期" value="{{= d.fieldname3 || '' }}">
|
||||
</script>
|
||||
<!-- colorpicker -->
|
||||
<script type="text/html" id="TPL-colorpicker-demo">
|
||||
{{# var color = d.color || ['#16baaa','#16b777','#1E9FFF','#FF5722','#FFB800','#393D49'][Math.round(Math.random()*5)]; }}
|
||||
<div class="colorpicker-demo" lay-options="{color: '{{= color }}'}"></div>
|
||||
</script>!}}
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use(function(){
|
||||
var $ = layui.$;
|
||||
var table = layui.table;
|
||||
var form = layui.form;
|
||||
var dropdown = layui.dropdown;
|
||||
var laydate = layui.laydate;
|
||||
var colorpicker = layui.colorpicker;
|
||||
|
||||
// 渲染
|
||||
table.render({
|
||||
elem: '#ID-table-demo-editmodes',
|
||||
url: '/static/2.8/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
page: true,
|
||||
css: [ // 设置单元格样式
|
||||
// 取消默认的溢出隐藏,并设置适当高度
|
||||
'.layui-table-cell{height: 50px; line-height: 40px;}',
|
||||
'.layui-table-cell .layui-colorpicker{width: 38px; height: 38px;}',
|
||||
'.layui-table-cell select{height: 36px; padding: 0 5px;}'
|
||||
].join(''),
|
||||
cols: [[ // 表头
|
||||
{field: 'id', title: 'ID', width:80, align: 'center', fixed: 'left'},
|
||||
{field: 'city', title: '原生 select', width:135, unresize: true, templet: '#TPL-select-primary'},
|
||||
//{field: 'city', title: 'layui select', width:150, templet: '#TPL-select-city'},
|
||||
{field: 'sex', title: 'dropdown', width:115, unresize: true, align: 'center', templet: '#TPL-dropdpwn-demo'},
|
||||
{field: 'date', title: 'laydate', width:150, templet: '#TPL-laydate-demo'},
|
||||
{field: 'color', title: 'color', width:80, unresize: true, align: 'center', templet: '#TPL-colorpicker-demo'},
|
||||
{field: 'sign', title: '文本', edit: 'textarea'}
|
||||
]],
|
||||
done: function(res, curr, count){
|
||||
var options = this;
|
||||
|
||||
// 获取当前行数据
|
||||
table.getRowData = function(elem){
|
||||
var index = $(elem).closest('tr').data('index');
|
||||
return table.cache[options.id][index] || {};
|
||||
};
|
||||
|
||||
// 原生 select 事件
|
||||
$('.select-demo-primary').on('change', function(){
|
||||
var value = this.value; // 获取选中项 value
|
||||
var data = table.getRowData(this); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
|
||||
|
||||
// 更新数据中对应的字段
|
||||
data.city = value;
|
||||
|
||||
// 显示 - 仅用于演示
|
||||
layer.msg('选中值: '+ value +'<br>当前行数据:'+ JSON.stringify(data));
|
||||
});
|
||||
|
||||
// layui form select 事件
|
||||
form.on('select(select-demo)', function(obj){
|
||||
console.log(obj); // 获取选中项数据
|
||||
|
||||
// 获取当前行数据(如 id 等字段,以作为数据修改的索引)
|
||||
var data = table.getRowData(obj.elem);
|
||||
|
||||
// 更新数据中对应的字段
|
||||
data.city = value;
|
||||
console.log(data);
|
||||
});
|
||||
|
||||
// dropdown 方式的下拉选择
|
||||
dropdown.render({
|
||||
elem: '.dropdpwn-demo',
|
||||
// trigger: 'hover',
|
||||
// 此处的 data 值,可根据 done 返回的 res 遍历来赋值
|
||||
data: [{
|
||||
title: '男',
|
||||
id: 100
|
||||
},{
|
||||
title: '女',
|
||||
id: 101
|
||||
},{
|
||||
title: '保密',
|
||||
id: 102
|
||||
}],
|
||||
click: function(obj){
|
||||
var data = table.getRowData(this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
|
||||
|
||||
this.elem.find('span').html(obj.title);
|
||||
|
||||
// 更新数据中对应的字段
|
||||
data.sex = obj.title;
|
||||
|
||||
// 显示 - 仅用于演示
|
||||
layer.msg('选中值: '+ obj.title +'<br>当前行数据:'+ JSON.stringify(data));
|
||||
}
|
||||
});
|
||||
|
||||
// laydate
|
||||
laydate.render({
|
||||
elem: '.laydate-demo',
|
||||
done: function(value, date, endDate){
|
||||
var data = table.getRowData(this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
|
||||
|
||||
// 更新数据中对应的字段
|
||||
data.date = value;
|
||||
|
||||
// 显示 - 仅用于演示
|
||||
layer.msg('选中值: '+ value +'<br>当前行数据:'+ JSON.stringify(data));
|
||||
}
|
||||
});
|
||||
|
||||
// colorpicker
|
||||
colorpicker.render({
|
||||
elem: '.colorpicker-demo',
|
||||
done: function(value){
|
||||
var data = table.getRowData(this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
|
||||
|
||||
// 更新数据中对应的字段
|
||||
data.color = value;
|
||||
|
||||
// 显示 - 仅用于演示
|
||||
layer.msg('选中值: '+ value +'<br>当前行数据:'+ JSON.stringify(data));
|
||||
}
|
||||
});
|
||||
|
||||
// 单元格普通编辑事件
|
||||
table.on('edit(ID-table-demo-editmodes)', function(obj){
|
||||
var value = obj.value // 得到修改后的值
|
||||
var data = obj.data // 得到所在行所有键值
|
||||
var field = obj.field; // 得到字段
|
||||
|
||||
// 更新数据中对应的字段
|
||||
var update = {};
|
||||
update[field] = value;
|
||||
obj.update(update);
|
||||
|
||||
// 编辑后续操作,如提交更新请求,以完成真实的数据更新
|
||||
// …
|
||||
|
||||
// 显示 - 仅用于演示
|
||||
layer.msg('编辑值: '+ value +'<br>当前行数据:'+ JSON.stringify(data));
|
||||
});
|
||||
|
||||
// 更多编辑方式……
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
58
public/frontend/layui-main/docs/table/examples/editable.md
Executable file
58
public/frontend/layui-main/docs/table/examples/editable.md
Executable file
@@ -0,0 +1,58 @@
|
||||
<table class="layui-hide" id="ID-table-demo-editable"></table>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use(function(){
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
|
||||
// 根据返回数据中某个字段来判断开启该行的编辑
|
||||
var editable = function(d){
|
||||
if(d.editable) return 'text'; // 这里假设以 editable 字段为判断依据
|
||||
};
|
||||
|
||||
// 创建表格实例
|
||||
table.render({
|
||||
elem: '#ID-table-demo-editable',
|
||||
url: '/static/2.8/json/table/edit.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
page: true,
|
||||
//,editTrigger: 'dblclick' // 触发编辑的事件类型(默认 click )。 v2.7.0 新增,之前版本固定为单击触发
|
||||
css: [
|
||||
// 对开启了编辑的单元格追加样式
|
||||
'.layui-table-view td[data-edit]{color: #16B777;}'
|
||||
].join(''),
|
||||
cols: [[
|
||||
{checkbox: true, fixed: true},
|
||||
{field:'id', title: 'ID', width:80, sort: true, fixed: true},
|
||||
{field:'username', title: '用户名', width:80, edit: editable},
|
||||
{field:'sex', title: '性别', width:80, sort: true, edit: editable},
|
||||
{field:'city', title: '城市', width:80, edit: editable},
|
||||
{field:'sign', title: '签名', edit: editable},
|
||||
{field:'experience', title: '积分', sort: true, width:80, edit: editable}
|
||||
]],
|
||||
height: 310
|
||||
});
|
||||
|
||||
// 单元格编辑后的事件
|
||||
table.on('edit(ID-table-demo-editable)', function(obj){
|
||||
var field = obj.field; // 得到修改的字段
|
||||
var value = obj.value // 得到修改后的值
|
||||
var oldValue = obj.oldValue // 得到修改前的值 -- v2.8.0 新增
|
||||
var data = obj.data // 得到所在行所有键值
|
||||
var col = obj.getCol(); // 得到当前列的表头配置属性 -- v2.8.0 新增
|
||||
|
||||
// 值的校验
|
||||
if(value.replace(/\s/g, '') === ''){
|
||||
layer.tips('值不能为空', this, {tips: 1});
|
||||
return obj.reedit(); // 重新编辑 -- v2.8.0 新增
|
||||
}
|
||||
|
||||
// 编辑后续操作,如提交更新请求,以完成真实的数据更新
|
||||
// …
|
||||
|
||||
// 显示 - 仅用于演示
|
||||
layer.msg('[ID: '+ data.id +'] ' + field + ' 字段更改值为:'+ util.escape(value));
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
48
public/frontend/layui-main/docs/table/examples/filter.md
Executable file
48
public/frontend/layui-main/docs/table/examples/filter.md
Executable file
@@ -0,0 +1,48 @@
|
||||
<table class="layui-hide" id="ID-table-demo-filter"></table>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use(function(){
|
||||
var $ = layui.$;
|
||||
var table = layui.table;
|
||||
|
||||
// 渲染
|
||||
table.render({
|
||||
elem: '#ID-table-demo-filter',
|
||||
url:'/static/2.8/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
toolbar: 'default',
|
||||
height: 315,
|
||||
cols: [function(){
|
||||
var arr = [
|
||||
{field:'id', title:'ID', width:80, fixed: 'left'},
|
||||
{field:'username', title:'用户', width:120},
|
||||
{field:'sex', title:'性别'},
|
||||
{field:'city', title:'城市'},
|
||||
{field:'sign', title:'签名'},
|
||||
{field:'classify', title:'职业'}
|
||||
];
|
||||
|
||||
// 初始化筛选状态
|
||||
var local = layui.data('table-filter-test'); // 获取对应的本地记录
|
||||
layui.each(arr, function(index, item){
|
||||
if(item.field in local){
|
||||
item.hide = local[item.field];
|
||||
}
|
||||
});
|
||||
return arr;
|
||||
}() ],
|
||||
done: function(){
|
||||
// 记录筛选状态
|
||||
var that = this;
|
||||
that.elem.next().on('mousedown', 'input[lay-filter="LAY_TABLE_TOOL_COLS"]+', function(){
|
||||
var input = $(this).prev()[0];
|
||||
// 此处表名可任意定义
|
||||
layui.data('table-filter-test', {
|
||||
key: input.name
|
||||
,value: input.checked
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
48
public/frontend/layui-main/docs/table/examples/init.md
Executable file
48
public/frontend/layui-main/docs/table/examples/init.md
Executable file
@@ -0,0 +1,48 @@
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn" lay-on="parseTable">转换为数据表格</button>
|
||||
</div>
|
||||
|
||||
<table lay-filter="parse-table-demo">
|
||||
<thead>
|
||||
<tr>
|
||||
<th lay-data="{field:'name', width:150}">人物</th>
|
||||
<th lay-data="{field:'nation', width:150}">民族</th>
|
||||
<th lay-data="{field:'maxim', minWidth: 180}">格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>庄子</td>
|
||||
<td>华夏</td>
|
||||
<td>朴素而天下莫能与之争美</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use(function(){
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
|
||||
// 事件
|
||||
util.on('lay-on', {
|
||||
parseTable: function(){
|
||||
// 转化静态表格
|
||||
table.init('parse-table-demo', {
|
||||
// height: ''
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
56
public/frontend/layui-main/docs/table/examples/onrowContextmenu.md
Executable file
56
public/frontend/layui-main/docs/table/examples/onrowContextmenu.md
Executable file
@@ -0,0 +1,56 @@
|
||||
<table class="layui-hide" id="ID-table-onrowContextmenu"></table>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use(['table', 'dropdown', 'util'], function(){
|
||||
var table = layui.table;
|
||||
var dropdown = layui.dropdown;
|
||||
var util = layui.util;
|
||||
|
||||
// 渲染
|
||||
table.render({
|
||||
elem: '#ID-table-onrowContextmenu',
|
||||
defaultContextmenu: false, // 是否在 table 行中允许默认的右键菜单
|
||||
url: '/static/2.8/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
page: true,
|
||||
cols: [[
|
||||
{field:'id', title:'ID', width:80, fixed: 'left', unresize: true},
|
||||
{field:'username', title:'用户', width:120},
|
||||
{field:'sex', title:'性别', width:80},
|
||||
{field:'city', title:'城市', width:100},
|
||||
{field:'sign', title:'签名'},
|
||||
{field:'experience', title:'积分', width:80, sort: true}
|
||||
]],
|
||||
});
|
||||
|
||||
// 行单击事件
|
||||
table.on('rowContextmenu(ID-table-onrowContextmenu)', function(obj){
|
||||
var data = obj.data; // 得到当前行数据
|
||||
var index = obj.index; // 得到当前行索引
|
||||
var tr = obj.tr; // 得到当前行 <tr> 元素的 jQuery 对象
|
||||
var options = obj.config; // 获取当前表格基础属性配置项
|
||||
// console.log(obj); // 查看对象所有成员
|
||||
|
||||
// 右键操作
|
||||
dropdown.render({
|
||||
trigger: 'contextmenu',
|
||||
show: true,
|
||||
data: [
|
||||
{title: 'Menu item 1', id: 'AAA'},
|
||||
{title: 'Menu item 2', id: 'BBB'}
|
||||
],
|
||||
click: function(menuData, othis) {
|
||||
// 显示选中的相关数据 - 仅用于演示
|
||||
layer.alert(util.escape(JSON.stringify({
|
||||
dropdown: menuData,
|
||||
table: obj.data
|
||||
})));
|
||||
}
|
||||
});
|
||||
|
||||
// obj.del() // 删除当前行
|
||||
// obj.update(fields, related); // 修改行数据
|
||||
obj.setRowChecked({selectedStyle: true}); // 标注行选中状态样式
|
||||
});
|
||||
});
|
||||
</script>
|
||||
42
public/frontend/layui-main/docs/table/examples/page.md
Executable file
42
public/frontend/layui-main/docs/table/examples/page.md
Executable file
@@ -0,0 +1,42 @@
|
||||
<table class="layui-hide" id="ID-table-demo-page"></table>
|
||||
<script type="text/html" id="ID-table-demo-page-pagebar">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="footerDemoBtn1">底部按钮1</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="footerDemoBtn2">底部按钮2</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use('table', function(){
|
||||
var table = layui.table;
|
||||
|
||||
// 创建渲染实例
|
||||
table.render({
|
||||
elem: '#ID-table-demo-page',
|
||||
url:'/static/2.8/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
page: { // 支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
|
||||
layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'], //自定义分页布局
|
||||
//curr: 5, //设定初始在第 5 页
|
||||
groups: 1, //只显示 1 个连续页码
|
||||
first: false, //不显示首页
|
||||
last: false //不显示尾页
|
||||
},
|
||||
pagebar: '#ID-table-demo-page-pagebar', // 分页栏模板
|
||||
cols: [[
|
||||
{field:'id', width:80, title: 'ID', sort: true},
|
||||
{field:'username', width:80, title: '用户名'},
|
||||
{field:'sex', width:80, title: '性别', sort: true},
|
||||
{field:'city', width:80, title: '城市'},
|
||||
{field:'sign', title: '签名', minWidth: 150},
|
||||
{field:'experience', width:80, title: '积分', sort: true}
|
||||
]]
|
||||
});
|
||||
|
||||
// 底部分页栏事件
|
||||
table.on('pagebar(ID-table-demo-page)', function(obj){
|
||||
var eventValue = obj.event; // 获得按钮 lay-event 值
|
||||
layer.msg(eventValue);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
40
public/frontend/layui-main/docs/table/examples/parse.md
Executable file
40
public/frontend/layui-main/docs/table/examples/parse.md
Executable file
@@ -0,0 +1,40 @@
|
||||
> 假设这是一段数据源:<a href="/static/2.8/json/table/demo3.json" target="_blank">/static/2.8/json/table/demo3.json</a><br>
|
||||
尽管它并不符合 table 组件默认规定的数据格式([#详见](#options-async-data)),但可以通过 parseData 回调将其进行转换。
|
||||
|
||||
<table class="layui-hide" id="ID-table-demo-parse"></table>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use('table', function(){
|
||||
var table = layui.table;
|
||||
|
||||
// 渲染
|
||||
table.render({
|
||||
elem: '#ID-table-demo-parse',
|
||||
url:'/static/2.8/json/table/demo3.json',
|
||||
page: true,
|
||||
response: {
|
||||
statusCode: 200 // 重新规定成功的状态码为 200,table 组件默认为 0
|
||||
},
|
||||
// 将原始数据解析成 table 组件所规定的数据格式
|
||||
parseData: function(res){
|
||||
return {
|
||||
"code": res.status, //解析接口状态
|
||||
"msg": res.message, //解析提示文本
|
||||
"count": res.total, //解析数据长度
|
||||
"data": res.rows.item //解析数据列表
|
||||
};
|
||||
},
|
||||
cols: [[
|
||||
{field:'id', title:'ID', width:80, fixed: 'left', unresize: true, sort: true},
|
||||
{field:'username', title:'用户名', width:120},
|
||||
{field:'email', title:'邮箱', width:150},
|
||||
{field:'experience', title:'积分', width:100, sort: true},
|
||||
{field:'sex', title:'性别', width:80, sort: true},
|
||||
{field:'sign', title:'签名'},
|
||||
{field:'joinTime', title:'加入时间', width:120}
|
||||
]],
|
||||
height: 315
|
||||
});
|
||||
});
|
||||
</script>
|
||||
77
public/frontend/layui-main/docs/table/examples/search.md
Executable file
77
public/frontend/layui-main/docs/table/examples/search.md
Executable file
@@ -0,0 +1,77 @@
|
||||
<form class="layui-form layui-row layui-col-space16">
|
||||
<div class="layui-col-md4">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-username"></i>
|
||||
</div>
|
||||
<input type="text" name="A" value="" placeholder="Field A" class="layui-input" lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md4">
|
||||
<div class="layui-input-wrap">
|
||||
<input type="text" name="B" placeholder="Field B" lay-affix="clear" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md4">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-date"></i>
|
||||
</div>
|
||||
<input type="text" name="C" readonly placeholder="Field C" class="layui-input demo-table-search-date">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-btn-container layui-col-xs12">
|
||||
<button class="layui-btn" lay-submit lay-filter="demo-table-search">Search</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">Clear</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table class="layui-hide" id="ID-table-demo-search"></table>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use(function(){
|
||||
var table = layui.table;
|
||||
var form = layui.form;
|
||||
var laydate = layui.laydate;
|
||||
|
||||
// 创建表格实例
|
||||
table.render({
|
||||
elem: '#ID-table-demo-search',
|
||||
url: '/static/2.8/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
cols: [[
|
||||
{type: 'radio', title: '😊', fixed: true}, // 单选框
|
||||
{field:'id', title: 'ID', width:80, sort: true, fixed: true},
|
||||
{field:'username', title: '用户名', width:80},
|
||||
{field:'sex', title: '性别', width:80, sort: true},
|
||||
{field:'city', title: '城市', width:80},
|
||||
{field:'sign', title: '签名'},
|
||||
{field:'experience', title: '积分', sort: true, width:80}
|
||||
]],
|
||||
page: true,
|
||||
height: 310
|
||||
});
|
||||
|
||||
// 日期
|
||||
laydate.render({
|
||||
elem: '.demo-table-search-date'
|
||||
});
|
||||
|
||||
// 搜索提交
|
||||
form.on('submit(demo-table-search)', function(data){
|
||||
var field = data.field; // 获得表单字段
|
||||
|
||||
// 执行搜索重载
|
||||
table.reload('ID-table-demo-search', {
|
||||
page: {
|
||||
curr: 1 // 重新从第 1 页开始
|
||||
},
|
||||
where: field // 搜索的字段
|
||||
});
|
||||
|
||||
layer.msg('搜索成功<br>此处为静态模拟数据,实际使用时换成真实接口即可');
|
||||
|
||||
return false; // 阻止默认 form 跳转
|
||||
});
|
||||
});
|
||||
</script>
|
||||
61
public/frontend/layui-main/docs/table/examples/setRowChecked.md
Executable file
61
public/frontend/layui-main/docs/table/examples/setRowChecked.md
Executable file
@@ -0,0 +1,61 @@
|
||||
<table class="layui-hide" id="ID-table-demo-setRowChecked"></table>
|
||||
<script type="text/html" id="demo-toolbar-setRowChecked">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use('table', function(){
|
||||
var table = layui.table;
|
||||
|
||||
// 渲染
|
||||
table.render({
|
||||
elem: '#ID-table-demo-setRowChecked',
|
||||
url: '/static/2.8/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
page: true,
|
||||
cols: [[
|
||||
// {type: 'radio', fixed: 'left'},
|
||||
{field:'id', title:'ID', width:80, fixed: 'left', unresize: true},
|
||||
{field:'username', title:'用户', width:120},
|
||||
{field:'sex', title:'性别', width:80},
|
||||
{field:'city', title:'城市', width:100},
|
||||
{field:'sign', title:'签名'},
|
||||
{field:'experience', title:'积分', width:80, sort: true}
|
||||
]],
|
||||
toolbar: '#demo-toolbar-setRowChecked',
|
||||
initSort: { // 设置初始排序
|
||||
field: 'experience', // 字段名
|
||||
type: 'desc' // 倒序
|
||||
},
|
||||
height: 366
|
||||
});
|
||||
|
||||
// 行单击事件( 双击事件为: rowDouble )
|
||||
table.on('row(ID-table-demo-setRowChecked)', function(obj){
|
||||
var data = obj.data; // 获取当前行数据
|
||||
|
||||
// 显示 - 仅用于演示
|
||||
layer.msg('当前行数据:<br>'+ JSON.stringify(data), {
|
||||
offset: '65px'
|
||||
});
|
||||
|
||||
// 标注当前点击行的选中状态
|
||||
obj.setRowChecked({
|
||||
type: 'radio' // radio 单选模式;checkbox 复选模式
|
||||
});
|
||||
});
|
||||
|
||||
// 头工具栏事件
|
||||
table.on('toolbar(ID-table-demo-setRowChecked)', function(obj){
|
||||
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
|
||||
switch(obj.event){
|
||||
case 'getCheckData':
|
||||
var data = checkStatus.data; // 获取选中行数据
|
||||
layer.alert(JSON.stringify(data)); // 显示 - 仅用于演示
|
||||
break;
|
||||
};
|
||||
});
|
||||
});
|
||||
</script>
|
||||
207
public/frontend/layui-main/docs/table/examples/static.md
Executable file
207
public/frontend/layui-main/docs/table/examples/static.md
Executable file
@@ -0,0 +1,207 @@
|
||||
默认风格:
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>人物</th>
|
||||
<th>民族</th>
|
||||
<th>格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
行边框表格:
|
||||
|
||||
<table class="layui-table" lay-skin="line">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>人物</th>
|
||||
<th>民族</th>
|
||||
<th>格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
列边框表格:
|
||||
|
||||
<table class="layui-table" lay-skin="row">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>人物</th>
|
||||
<th>民族</th>
|
||||
<th>格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
无边框表格:
|
||||
|
||||
<table class="layui-table" lay-skin="nob">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>人物</th>
|
||||
<th>民族</th>
|
||||
<th>格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
小尺寸表格:
|
||||
|
||||
<table class="layui-table" lay-size="sm">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>人物</th>
|
||||
<th>民族</th>
|
||||
<th>格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
大尺寸表格:
|
||||
|
||||
<table class="layui-table" lay-size="lg">
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>人物</th>
|
||||
<th>民族</th>
|
||||
<th>格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
开启偶数行背景色:
|
||||
|
||||
<table class="layui-table" lay-even>
|
||||
<colgroup>
|
||||
<col width="150">
|
||||
<col width="150">
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>人物</th>
|
||||
<th>民族</th>
|
||||
<th>格言</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>孔子</td>
|
||||
<td>华夏</td>
|
||||
<td>有朋至远方来,不亦乐乎</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>孟子</td>
|
||||
<td>华夏</td>
|
||||
<td>穷则独善其身,达则兼济天下</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>庄子</td>
|
||||
<td>华夏</td>
|
||||
<td>朴素而天下莫能与之争美</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
63
public/frontend/layui-main/docs/table/examples/templet.md
Executable file
63
public/frontend/layui-main/docs/table/examples/templet.md
Executable file
@@ -0,0 +1,63 @@
|
||||
<table class="layui-hide" id="ID-table-demo-templet"></table>
|
||||
|
||||
<script type="text/html" id="ID-table-demo-templet-user">{{!
|
||||
<a href="" target="_blank">{{= d.username }}</a>
|
||||
!}}</script>
|
||||
|
||||
<script type="text/html" id="ID-table-demo-templet-switch">{{!
|
||||
<!-- 这里的 checked 的状态值判断仅作为演示 -->
|
||||
<input type="checkbox" name="status" value="{{= d.id }}" title="热|" lay-skin="switch" lay-filter="demo-templet-status" {{= d.id == 10001 ? "checked" : "" }}>
|
||||
!}}</script>
|
||||
|
||||
<script type="text/html" id="ID-table-demo-templet-other">{{!
|
||||
<span class="layui-badge-rim" style="margin-right: 10px;">评分:{{= d.score }}</span>
|
||||
<span class="layui-badge-rim">职业:{{= d.classify }}</span>
|
||||
<!--
|
||||
<span class="layui-badge-rim">下标:{{= d.LAY_INDEX }}</span>
|
||||
<span class="layui-badge-rim">序号:{{= d.LAY_NUM }}</span>
|
||||
-->
|
||||
!}}</script>
|
||||
|
||||
<!-- import layui -->
|
||||
<script>
|
||||
layui.use(['table'], function(){
|
||||
var table = layui.table;
|
||||
var form = layui.form;
|
||||
|
||||
// 创建渲染实例
|
||||
table.render({
|
||||
elem: '#ID-table-demo-templet',
|
||||
url:'/static/2.8/json/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
page: true,
|
||||
height: '315px',
|
||||
cols: [[
|
||||
{type: 'checkbox', fixed: 'left'},
|
||||
// 未自定义模板的普通列
|
||||
{field:'id', fixed: 'left', width:80, title: 'ID', sort: true},
|
||||
// 模板 - 选择器写法
|
||||
{field:'username', width:80, title: '用户', templet: '#ID-table-demo-templet-user'},
|
||||
// 模板 - 函数写法
|
||||
{field:'sex', width:60, title: '性别', templet: function(d){
|
||||
if(d.sex === '男'){
|
||||
return '<span style="color: blue">♂</span>';
|
||||
} else {
|
||||
return '<span style="color: pink">♀</span>';
|
||||
}
|
||||
}},
|
||||
// 模板 - 普通字符写法
|
||||
{field:'city', width:115, title: '城市', templet: '<div><i class="layui-icon layui-icon-location"></i> {{!{{= d.city }}!}}</div>'},
|
||||
// 模板中可包含任意字段、任意内容(如表单等)
|
||||
{title: '状态', width:85, templet: '#ID-table-demo-templet-switch'},
|
||||
{title: '其他', minWidth:200, templet: '#ID-table-demo-templet-other'}
|
||||
]]
|
||||
});
|
||||
|
||||
// 状态 - 开关操作
|
||||
form.on('switch(demo-templet-status)', function(obj){
|
||||
var id = this.value;
|
||||
var name = this.name;
|
||||
layer.tips(id + ' ' + name + ': '+ obj.elem.checked, obj.othis);
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
53
public/frontend/layui-main/docs/table/examples/theads.md
Executable file
53
public/frontend/layui-main/docs/table/examples/theads.md
Executable file
@@ -0,0 +1,53 @@
|
||||
常用两级表头:
|
||||
|
||||
<table class="layui-table" lay-data="{url:'/static/2.8/json/table/demo2.json?v=2', page: true, limit: 6, limits:[6]}" id="ID-table-demo-theads-1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th lay-data="{checkbox:true}" rowspan="2"></th>
|
||||
<th lay-data="{field:'username', width:80}" rowspan="2">联系人</th>
|
||||
<th lay-data="{align:'center'}" colspan="3">地址</th>
|
||||
<th lay-data="{field:'amount'}" rowspan="2">数量</th>
|
||||
<th lay-data="{fixed: 'right', width: 160, align: 'center', toolbar: '#templet-demo-theads-tool'}" rowspan="2">操作</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th lay-data="{field:'province', width:100}">省</th>
|
||||
<th lay-data="{field:'city', width:100}">市</th>
|
||||
<th lay-data="{field:'zone', width:100}">区</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
更多级表头(支持无限极):
|
||||
|
||||
<table class="layui-table" lay-data="{url:'/static/2.8/json/table/demo2.json?v=3', cellMinWidth: 80, page: true}" id="ID-table-demo-theads-2">
|
||||
<thead>
|
||||
<tr>
|
||||
<th lay-data="{field:'username', fixed:'left', width:80}" rowspan="3">联系人</th>
|
||||
<th lay-data="{field:'amount'}" rowspan="3">数量</th>
|
||||
<th lay-data="{align:'center'}" colspan="5">地址1</th>
|
||||
<th lay-data="{align:'center'}" colspan="2">地址2</th>
|
||||
<th lay-data="{fixed: 'right', width: 160, align: 'center', toolbar: '#templet-demo-theads-tool'}" rowspan="3">操作</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th lay-data="{field:'province'}" rowspan="2">省</th>
|
||||
<th lay-data="{field:'city'}" rowspan="2">市</th>
|
||||
<th lay-data="{align:'center'}" colspan="3">详细</th>
|
||||
<th lay-data="{field:'province'}" rowspan="2">省</th>
|
||||
<th lay-data="{field:'city'}" rowspan="2">市</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th lay-data="{field:'street'}" rowspan="2">街道</th>
|
||||
<th lay-data="{field:'address'}">小区</th>
|
||||
<th lay-data="{field:'house'}">单元</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
||||
<script type="text/html" id="templet-demo-theads-tool">
|
||||
<div class="layui-clear-space">
|
||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>
|
||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- import layui -->
|
||||
Reference in New Issue
Block a user