layui table导出选中数据或导出所有数据,打印选中数据

导出选中数据,导出当前查询条件下的所有数据

打印选中数据

var tableDataCount;//记录查询到数据的总条数
var exportUrl = 'xxx';//记录查询url
var currTable = table.render({
    elem: "#LAY-list-manage",
    url: exportUrl,
    where: whereStr,
    toolbar: '#toolbarDemo', 
    defaultToolbar: ['filter', 'print'],
    cellMinWidth: 150, 
    cols: [cols],
    done: function(res, curr, count){
        tableDataCount = count;
    }
});
//单独设置导出按钮
table.on('toolbar(LAY-list-manage)', function (obj) {
    var checkStatus = i.checkStatus(obj.config.id);
    switch (obj.event) {
        case 'custExportExcel': //导出
               if (device.ie) {
                   layer.tips('导出功能不支持 IE,请用 Chrome 等高级浏览器导出',
                       this,
                       {
                           tips: 3
                       });
               } else {
                   //获取选中的行
                   var datas = checkStatus.data;
                   if (datas.length>0) {
                       //导出选中行
                        table.exportFile(obj.config.id, datas, 'xls');
                   } else {
                       //导出当前查询条件下的所有数据
                       whereStr.page = 1;
                       whereStr.limit = tableDataCount;
                       $.ajax({
                           type: 'get',
                           url: exportUrl,
                           data: whereStr,
                           success: function (res) {
                                table.exportFile(obj.config.id, res.data, 'xls');
                           }
                       });
                   }
               }
               break;
        case 'printSel': //打印选中数据
               //选中数据
               var datas = checkStatus.data;
               var style = [
                   '<style>', 'body{font-size: 12px; color: #666;}',
                   'table{width: 100%; border-collapse: collapse; border-spacing: 0;}',
                   'th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}', '</style>'
               ].join('');
               if (datas.length > 0) {
                   //获取列名和列值
                   var cols = obj.config.cols[0];
                   var tableHtml = '<table><tr>';
                   for (var j = 0; j < cols.length; j++) {
                       if (!cols[j].hide && cols[j].type !== "checkbox") {
                           tableHtml += '<td>' + cols[j].title+'</td>';
                       }
                   }
                   tableHtml += '</tr>';
                   for (var l = 0; l < datas.length; l++) {
                       tableHtml += '<tr>';
                       for (var m = 0; m < cols.length; m++) {
                           if (!cols[m].hide && cols[m].type !== "checkbox" && cols[m].type !=="cols[m].type !==") {
                               tableHtml += '<td>' + datas[l][cols[m].field] + '</td>';
                           }
                       }
                       tableHtml += '</tr>';
                   }
                   tableHtml += '</table>';
                   //创建一个打印窗口 
                   var printWindow = window.open("打印窗口", "_blank");
                   //将明细页面拷贝到新的窗口,这样新的窗口就有了明细页面的样式
                   var htmlbox = '<html><head>' + style+'</head><body></body></html>';
                   printWindow.document.write(htmlbox);
                   //获得要打印的内容
                   var printbox = tableHtml;
                   //将要打印的内容替换到新窗口的body中
                   printWindow.document.body.innerHTML = printbox;
                   //脚本向窗口(不管是本窗口或其他窗口)写完内容后,必须关闭输出流。在延时脚本的最后一个document.write()方法后面,必须确保含有document.close()方法,不这样做就不能显示图像和表单。
                   //并且,任何后面调用的document.write()方法只会把内容追加到页面后,而不会清除现有内容来写入新值。
                   printWindow.document.close();
                   //打印
                   //chrome浏览器使用jqprint插件打印时偶尔空白页问题
                   //解决方案:有时候页面总是加载不出来,打印出现空白页,可以设置延迟时间来等待页面的渲染,但是渲染时间的长短跟页面的大小有关,是不固定的。所以这里使用事件监听器。
                   printWindow.addEventListener('load', function () {
                       printWindow.print();
                       //关闭窗口
                       printWindow.close();
                   });
               } else {
                   alert('请先选中要打印的数据!');
               }
               break;
    }
});

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值