[ layui 笔记] table 回调函数实现弹窗预览表格行数据 和 编辑表格行数据

一、查看表格行数据

当layui表格横向字段太多,滚动条查看非常不方便,客户要求每行只展示几条数据,然后给每行一个查看按钮,点击预览可查看所在行全部数据。

1、在 table.on() 监听表格查看按钮点击事件中获得所在行数据 obj

2、用 layer.open() 打开查看页面,content 是查看页面地址

3、在 success 回调函数中用 layer.getChildFrame()读取查看页面的 body 标签,用 body.fine()读取查看页面的 input 输入框的 id

 4、用 val()方法给 input 输入框赋值即可展示表格数据

 先看查看页面效果:

 查看页面代码:

查看按钮监听代码:
table.on('tool(currentTableFilter)', function (obj) {
    var data = obj.data; // 获取当前行数据
    if (obj.event === 'detail') { //预览信息

                    var index = layer.open({
                        title: '预览信息',
                        type: 2, //0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
                        shade: 0.2,
                        maxmin: true,
                        shadeClose: true,
                        area: ['100%', '100%'],
                        content: 'detail.html',
                        success: function (layero, index) { //回调函数
                            console.log("回调函数", data)
                            var body = layer.getChildFrame('body', index)
                            body.find('#id').val(data.id)
                            body.find('#name').val(data.name)
                            body.find('#sex').val(data.sex)
                            body.find('#ethnic').val(data.ethnic)
                            body.find('#nativePlace').val(data.nativePlace)
                        }
}

二、编辑表格行数据

查看实现之后就可以编辑了,我这里偷懒是直接在查看页面修改信息

1、监听确认修改按钮,得到data数据

2、向后台接口发起请求,请求代码不能直接用,需要自己写,可以参考后面的请求代码

 浏览器控制台检查是否能成功获取到修改的额数据

 监听修改按钮代码:
//监听编辑按钮
            form.on('submit(saveBtn)', function (data) {
                console.log("编辑信息数据", data)
                
                // 发起请求 可选参数:(urlStr, typeStr, asyncBoole, bodyObj, retFun, token, param)
                http.appRequst("url", "PUT", true, data.field, retAdd, http.token);
                function retAdd(res) {
                    if (res.code == 200) {
                        var index = layer.msg("修改成功", {
                            time: 1000 // 弹窗延迟 1秒
                        }, function () {
                            // 关闭弹出层
                            layer.close(index);
                            // 关闭添加页面
                            var iframeIndex = parent.layer.getFrameIndex(window.name);
                            parent.layer.close(iframeIndex);
                        })
                    }
                }
                return false;
            });
发起请求代码参考:
$.ajax({
                url: '', //请求地址
                type: 'put', //请求类型,post/get/put/delete
                dataType: 'json',//请求的数据类型
                data: JSON.stringify({"name": "张三", "sex": "男"}), //请求的数据,并将请求的数据转成JSON格式
                contentType: 'application/json;charset=UTF-8', //
                headers: {Authorization: '这里写token'}, //请求头token(没有token可以不要这行)
                async: true, //同步还是异步, true异步,false同步
                success: function (res) { //请求成功回调函数
                    console.log("返回的结果",res);
                },
                error: function (res) { //请求失败回调函数
                    console.log("返回的结果",res);
                }
            });

layui中,可以使用table模块中的editEvent方法实现table的编辑功能。具体步骤如下: 1. 引入layui和jquery库 ```html <!-- 引入layui样式 --> <link rel="stylesheet" href="/layui/css/layui.css"> <!-- 引入jquery库 --> <script src="/jquery/jquery-3.6.0.min.js"></script> <!-- 引入layui库 --> <script src="/layui/layui.all.js"></script> ``` 2. 编写HTML代码 ```html <table id="demo" lay-filter="test"></table> ``` 3. 编写JavaScript代码 ```javascript // 定义表格列 var tableCols = [[ {type: 'checkbox', fixed: 'left'}, {field: 'id', title: 'ID', width: 80, sort: true, fixed: 'left', edit: 'text'}, {field: 'username', title: '用户名', width: 120, edit: 'text'}, {field: 'email', title: '邮箱', width: 200, edit: 'text'}, {field: 'sex', title: '性别', width: 80, edit: 'text'}, {field: 'city', title: '城市', width: 120, edit: 'text'}, {field: 'sign', title: '签名', width: 200, edit: 'text'}, {field: 'experience', title: '经验值', width: 100, sort: true, edit: 'text'}, {field: 'score', title: '积分', width: 100, sort: true, edit: 'text'}, {field: 'classify', title: '职业', width: 100, edit: 'text'}, {field: 'wealth', title: '财富', width: 150, sort: true, edit: 'text'}, {fixed: 'right', title: '操作', width: 150, align: 'center', toolbar: '#barDemo'} ]]; // 定义表格数据 var tableData = [ {id: '10001', username: '张三', email: 'zhangsan@123.com', sex: '男', city: '北京', sign: '我是张三', experience: 100, score: 80, classify: '程序员', wealth: 10000}, {id: '10002', username: '李四', email: 'lisi@123.com', sex: '男', city: '上海', sign: '我是李四', experience: 80, score: 90, classify: '设计师', wealth: 20000}, {id: '10003', username: '王五', email: 'wangwu@123.com', sex: '女', city: '广州', sign: '我是王五', experience: 120, score: 100, classify: '作家', wealth: 30000}, {id: '10004', username: '赵六', email: 'zhaoliu@123.com', sex: '女', city: '深圳', sign: '我是赵六', experience: 80, score: 60, classify: '程序员', wealth: 5000}, {id: '10005', username: '钱七', email: 'qianqi@123.com', sex: '男', city: '杭州', sign: '我是钱七', experience: 200, score: 80, classify: '程序员', wealth: 40000} ]; // 渲染表格 layui.use(['table', 'form'], function() { var table = layui.table; var form = layui.form; // 监听表格编辑事件 table.on('edit(test)', function(obj){ var value = obj.value; // 得到修改后的值 var field = obj.field; // 得到修改的字段名 var data = obj.data; // 得到修改的数据对象 // TODO: 将修改的数据提交到后台保存 }); // 渲染表格 table.render({ elem: '#demo', cols: tableCols, data: tableData, toolbar: '#toolbarDemo', page: true, limit: 10, limits: [10, 20, 30, 40, 50] }); }); ``` 在上面的代码中,tableCols定义了表格的列,其中使用了edit属性指定可编辑的字段。tableData定义了表格数据。在表格渲染之后,通过table.on('edit', ...)方法监听表格的编辑事件,可以在事件处理函数中实现将修改的数据提交到后台保存的逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值