fsLayui数据表格编辑使用说明

介绍

数据表格编辑主要使用场景:新增或编辑同时需要提交多条记录(原有模式只支持单条记录提交),通过编辑数据表格,保存获取所有表格数据提交。

使用说明

静态表格编辑和普通数据表格使用上没有区别,只需要在原有的基础上做一些配置或修改。
普通数据表格使用说明

表格列设置可以编辑

表格如果需要编辑,那么只需要在编辑的列上增加edit="text"即可,目前只支持文本框输入

1
2
3
4
5
6
7
8
<div class="fsDatagridCols">
<p type="numbers" title="#" />
<p field="attribute" edit="text" title="参数" width="150"/>
<p field="name" edit="text" title="名称" width="200"/>
<p field="value" edit="text" title="值" width="130"/>
<p field="defaultValue" edit="text" title="默认值" width="130"/>
<p fixed="right" align="center" toolbar="#barDemo" title="操作" width="100" />
</div>

表格新增行

  • 需要为表格增加一行空的记录,需要怎么做?

框架本身已经处理好了,我们只需要在按钮配置function="addRow",描述点击按钮后,增加一个记录。

特殊说明:
如果表格的id不是默认的fsDatagrid,那么需要在按钮上配置tableId="addFsDatagrid",指向对应的表格id,这点与普通数据表格使用一致。

1
2
3
<button class="layui-btn layui-btn layui-btn-sm" function="addRow" tableId="addFsDatagrid">
<i class="layui-icon">&#xe654;</i>新增
</button>

表格删除行

表格删除行,目前只支持在表格内配置一个模板,模板里面配置删除按钮。

配置事件监听lay-event="delRow"描述删除行操作。

如果需要删除确认提示,可以配置isConfirm="1",不需要配置为0或者不配置即可。

1
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delRow" isConfirm="1" confirmMsg="是否确定删除当前记录?">删除</a>

表格初始化数据查询处理

对于新增页面,没有这个处理,对于编辑页面,需要先把之前保存的数据提取出来,对原有的数据进行操作,那么就需要做这个处理。

使用步骤:

  1. 配置table表格中异步加载地址url="/fsbus/S1030"
  2. 配置table表格中业务参数,主要用在异步加载传入的参数inputs="funcId:$id"

注意:
这里的inputs中的配置数据不是数据表格选中的行,而是打开此页面url地址中的参数。

1
2
<table id="addFsDatagrid" lay-filter="addFsDatagrid" class="fsDatagrid" groupId="test" url="/fsbus/S1030"
isLoad="0" isPage="0" height="200" inputs="funcId:$id"></table>

保存操作

点击保存按钮后,需要怎么获取到表格里面的数据?怎么把数据提交后台处理?

  1. 保存按钮配置

function="save" 描述保存操作
groupId="test" 配置分组id,配置后会获取这个分组的所有数据
url="/fsbus/1007" 配置提交数据的url地址

1
<button class="layui-btn fsAdd" function="save" groupId="test" url="/fsbus/1007"><i class="layui-icon">&#xe609;</i>新增</button>
  1. 表格配置

groupId="test" 配置分组id,配置后保存按钮会获取到这个表格的数据

1
2
<table id="addFsDatagrid" lay-filter="addFsDatagrid" class="fsDatagrid" groupId="test" url="/fsbus/S1030"
isLoad="0" isPage="0" height="200" inputs="funcId:$id"></table>

请求参数说明

表格提交默认的参数为: fsTableData ,对应的值是一个编码后的json字符串,后台获取值后需要解码。

  • java 解码demo
1
2
3
4
try {
fsTableData = URLDecoder.decode(fsTableData, "UTF-8");
} catch (UnsupportedEncodingException e) {
}

表格的参数分为2个类型,1:原数据提交,2:增删改标签提交(fsType)
默认为1,可以在fsConfig.js中配置datagridSubmitType,两种模式各有各的优缺点,根据自己的要求修改。

模式一(原数据提交)

此模式会自动获取数据表格的原数据,不会做任何其他的数据,所以在编辑的时候,需要先删除以前的数据,然后重新新增。

例如:

1
[{"LAY_TABLE_INDEX":0,"attribute":"test1","name":"测试1"},{"LAY_TABLE_INDEX":1,"attribute":"test2","name":"测试2"}]

模式二(增删改标签提交)

此模式在数据表格原数据基础上新增了一个系统参数fsType,可以通过这个参数来判断当前记录的操作模式(新增,修改,删除)。

fsType参数说明:
add : 新增
edit : 修改
del : 删除

例如:

1
[{"attribute":"2121","createdTime":"2017-12-20 14:33:03","defaultValue":"2121","funcId":"393028361208020992","id":"393048159182733312","modifiedTime":"2017-12-20 14:33:03","name":"1221","orderline":"393048159182733312","value":"2121","LAY_TABLE_INDEX":0,"fsType":"edit"},{"fsType":"add","LAY_TABLE_INDEX":1,"attribute":"121212","name":"22"},{"attribute":"3223","createdTime":"2017-12-20 14:33:03","defaultValue":"23","description":"2323","funcId":"393028361208020992","id":"393048159178539008","maxLength":"3223","minLength":"3232","modifiedTime":"2017-12-20 14:34:01","name":"3223","notEmpty":"1","orderline":"393048159178539008","type":"1","value":"323232","verifyType":"Numeric","fsType":"del"}]

完整表格demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<div class="layui-row grid-demo">
<div class="layui-col-md3">
<button class="layui-btn layui-btn layui-btn-sm" function="addRow" tableId="addFsDatagrid">
<i class="layui-icon">&#xe654;</i>新增
</button>
</div>
<div class="layui-col-md12">
<table id="addFsDatagrid" lay-filter="addFsDatagrid" class="fsDatagrid" groupId="test" url="/fsbus/S1030"
isLoad="0" isPage="0" height="200" inputs="funcId:$id"></table>

<div class="fsDatagridCols">
<p type="numbers" title="#" />
<p field="attribute" edit="text" title="参数" width="150"/>
<p field="name" edit="text" title="名称" width="200"/>
<p field="value" edit="text" title="值" width="130"/>
<p field="defaultValue" edit="text" title="默认值" width="130"/>
<p fixed="right" align="center" toolbar="#barDemo" title="操作" width="100" />
</div>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delRow" isConfirm="1" confirmMsg="是否确定删除当前记录?">删除</a>
</script>
</div>
</div>
<div style="text-align: center;">
<button class="layui-btn fsAdd" function="save" groupId="test" url="/fsbus/1007"><i class="layui-icon">&#xe609;</i>新增</button>
<button class="layui-btn fsEdit" function="save" groupId="test" url="/fsbus/1008"><i class="layui-icon">&#xe609;</i>修改</button>
<button type="button" class="layui-btn layui-btn-primary" function="close">关闭</button>
</div>

效果图