Layui数据表格的Laydate的整列赋值

本文介绍了如何在layui数据表格中优化交货日期调整功能,通过CSS隐藏输入框,利用input模板和laydate插件实现选择后整列赋值,以及列名点击事件触发日期选择并更新对应数据。
摘要由CSDN通过智能技术生成

一、最近项目为一个layui数据表格的采购订单明细,在选择好产品后,交货日期根据具体需要进行调整。但也有所有产品是一个交货期的时候,如果逐个调整,用户体验感不好。
1、选择产品后需要逐个调整
选择产品后,需要逐个调整
2、期望整列调整
在这里插入图片描述
在下三角点击,弹出日期窗,选择后,整列赋值
在这里插入图片描述
3、之后,可以针对个别的产品进行调整
在这里插入图片描述
4、最后,获得值
在这里插入图片描述
二、具体做法:
1、CSS:

    .invisible {
        display: block;
        width: 0px;
        height: 0px;
    }

2、input模板

<!-- 日历面板 -->
<script type="text/html" id="delivery">
    <input class="layui-input delivery" placeholder="选择日期" value="{{= d.fieldname3 || '' }}">
</script>

3、数据表格字段

 {
  field: 'delivery',
  title: '交货日期<i class="layui-icon layui-icon-down" id="yt-date"  lay-event="yt-date"  style="margin-left: 5px; font-size: 10px;"></i><i id="date-input" class="layui-icon layui-icon-date invisible"></i>',
  templet: '#delivery',
  align: 'left',
  width: 120,
 },

4、表格渲染后的回调函数

 done: function (res, curr, count) {
	   var options = this;
       // 获取当前行数据
       table.getRowData = function (tableId, elem) {
           var index = $(elem).closest('tr').data('index');
           return table.cache[tableId][index] || {};
       };
       laydate.render({
       elem: '.delivery',
       done: function (value, date, endDate) {
         var data = table.getRowData(options.id, this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
        // 更新数据中对应的字段
        data.delivery = value;
         }
     });
}

5、表格列名点击事件

//表格列名点击事件
table.on('colTool(paramTable)', function (obj) {
   switch (obj.event) {    // 获得自定义元素对应的 lay-event 属性值
        case 'yt-date':
              laydate.render({
                   elem: '#date-input',
                   eventElem: '#yt-date',//动作的点
                   done: function (value, date, endDate) {
                            var form = layui.form;
                            var table = layui.table;
                            var laytpl = layui.laytpl;
                            var $ = layui.jquery;
                            var tempCache = table.cache['paramTable'];
                            $.each(tempCache, function (idx, val) {
                                val.delivery = value;  //给表格字段赋值,提交时用
                            });
                            $(".delivery").empty();  //清空delivery的值
                            $('.delivery').val(value); //赋值
                        }
                    });
                    break;
            }
        });

至此完成了工作;

layui table 中进行分页导出的实现,需要用到 layui 的 table 模块中的 exportFile 方法。该方法可以将 table 中的数据导出为 Excel 或 CSV 格式,并支持分页导出。 具体实现步骤如下: 1. 在 layui table 中添加一个导出按钮,用于触发导出操作。 ```html <button class="layui-btn layui-btn-sm export-btn">导出</button> ``` 2. 在 JavaScript 中绑定导出按钮的点击事件,并调用 table 模块的 exportFile 方法。 ```javascript layui.use(['table', 'util'], function() { var table = layui.table, util = layui.util; // 导出按钮点击事件 $('.export-btn').on('click', function() { // 获取当前 table 的数据和分页信息 var data = table.cache['table-id'], page = table.cache['table-id'].page; // 设置导出文件名 var filename = 'table-' + util.toDateString(new Date(), 'yyyyMMddHHmmss'); // 调用导出方法 table.exportFile(['列1', '列2', '列3'], data, filename, page); }); }); ``` 3. 在导出方法中,需要传入三个参数:表头、数据、文件名和分页信息。 ```javascript table.exportFile(['列1', '列2', '列3'], data, filename, page); ``` 其中,表头是一个数组,包含所有要导出的列的名称;数据是一个数组,包含所有要导出的数据;文件名是要导出的文件名,可以自定义;分页信息是一个对象,包含当前页码和每页显示的数据条数。 完整代码示例: ```html <table id="table-id" lay-filter="table-filter"></table> <button class="layui-btn layui-btn-sm export-btn">导出</button> <script> layui.use(['table', 'util'], function() { var table = layui.table, util = layui.util; // 渲染表格 table.render({ elem: '#table-id', url: '/api/data', cols: [[ {field: 'id', title: '编号'}, {field: 'name', title: '姓名'}, {field: 'age', title: '年龄'}, {field: 'gender', title: '性别'}, {field: 'address', title: '地址'} ]] }); // 导出按钮点击事件 $('.export-btn').on('click', function() { // 获取当前 table 的数据和分页信息 var data = table.cache['table-id'], page = table.cache['table-id'].page; // 设置导出文件名 var filename = 'table-' + util.toDateString(new Date(), 'yyyyMMddHHmmss'); // 调用导出方法 table.exportFile(['编号', '姓名', '年龄', '性别', '地址'], data, filename, page); }); }); </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值