码迷,mamicode.com
首页 > 其他好文 > 详细

easyui的datagrid打印(转)

时间:2014-05-26 14:55:05      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:style   c   class   blog   code   java   

在使用easyui插件的时候,使用最多的应该是datagrid插件。有时候根据客户需求,可能需要将datagrid内容进行打印,这时候如果直接调用window.print,可能由于easyui的datagrid存在滚动条而导致滚动条其他部分打印不出来的问题。通过百度有编“easyui基于web的打印实现”可以基本实现打印,但是还是存在一些问题,比如多表头情况打印不了,某列有调用脚本的,将会出现undefined等等。

    通过修改该文的代码,就可以实现直接使用脚本打印easyui的datagrid内容,代码如下:

print.js

bubuko.com,布布扣
// strPrintName 打印任务名
// printDatagrid 要打印的datagrid
function CreateFormPage(strPrintName, printDatagrid) {
    var tableString = ‘<table cellspacing="0" class="pb">‘;
    var frozenColumns = printDatagrid.datagrid("options").frozenColumns;  // 得到frozenColumns对象
    var columns = printDatagrid.datagrid("options").columns;    // 得到columns对象
    var nameList = ‘‘;

    // 载入title
    if (typeof columns != ‘undefined‘ && columns != ‘‘) {
        $(columns).each(function (index) {
            tableString += ‘\n<tr>‘;
            if (typeof frozenColumns != ‘undefined‘ && typeof frozenColumns[index] != ‘undefined‘) {
                for (var i = 0; i < frozenColumns[index].length; ++i) {
                    if (!frozenColumns[index][i].hidden) {
                        tableString += ‘\n<th width="‘ + frozenColumns[index][i].width + ‘"‘;
                        if (typeof frozenColumns[index][i].rowspan != ‘undefined‘ && frozenColumns[index][i].rowspan > 1) {
                            tableString += ‘ rowspan="‘ + frozenColumns[index][i].rowspan + ‘"‘;
                        }
                        if (typeof frozenColumns[index][i].colspan != ‘undefined‘ && frozenColumns[index][i].colspan > 1) {
                            tableString += ‘ colspan="‘ + frozenColumns[index][i].colspan + ‘"‘;
                        }
                        if (typeof frozenColumns[index][i].field != ‘undefined‘ && frozenColumns[index][i].field != ‘‘) {
                            nameList += ‘,{"f":"‘ + frozenColumns[index][i].field + ‘", "a":"‘ + frozenColumns[index][i].align + ‘"}‘;
                        }
                        tableString += ‘>‘ + frozenColumns[0][i].title + ‘</th>‘;
                    }
                }
            }
            for (var i = 0; i < columns[index].length; ++i) {
                if (!columns[index][i].hidden) {
                    tableString += ‘\n<th width="‘ + columns[index][i].width + ‘"‘;
                    if (typeof columns[index][i].rowspan != ‘undefined‘ && columns[index][i].rowspan > 1) {
                        tableString += ‘ rowspan="‘ + columns[index][i].rowspan + ‘"‘;
                    }
                    if (typeof columns[index][i].colspan != ‘undefined‘ && columns[index][i].colspan > 1) {
                        tableString += ‘ colspan="‘ + columns[index][i].colspan + ‘"‘;
                    }
                    if (typeof columns[index][i].field != ‘undefined‘ && columns[index][i].field != ‘‘) {
                        nameList += ‘,{"f":"‘ + columns[index][i].field + ‘", "a":"‘ + columns[index][i].align + ‘"}‘;
                    }
                    tableString += ‘>‘ + columns[index][i].title + ‘</th>‘;
                }
            }
            tableString += ‘\n</tr>‘;
        });
    }
    // 载入内容
    var rows = printDatagrid.datagrid("getRows"); // 这段代码是获取当前页的所有行
    var nl = eval(‘([‘ + nameList.substring(1) + ‘])‘);
    for (var i = 0; i < rows.length; ++i) {
        tableString += ‘\n<tr>‘;
        $(nl).each(function (j) {
            var e = nl[j].f.lastIndexOf(‘_0‘);

            tableString += ‘\n<td‘;
            if (nl[j].a != ‘undefined‘ && nl[j].a != ‘‘) {
                tableString += ‘ style="text-align:‘ + nl[j].a + ‘;"‘;
            }
            tableString += ‘>‘;
            if (e + 2 == nl[j].f.length) {
                tableString += rows[i][nl[j].f.substring(0, e)];
            }
            else
                tableString += rows[i][nl[j].f];
            tableString += ‘</td>‘;
        });
        tableString += ‘\n</tr>‘;
    }
    tableString += ‘\n</table>‘;

    window.showModalDialog("/print.htm", tableString,
    "location:No;status:No;help:No;dialogWidth:800px;dialogHeight:600px;scroll:auto;");
}
bubuko.com,布布扣

print.htm

bubuko.com,布布扣
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>数据打印</title>
    <style type="text/css">
body{background:white;margin:0px;padding:0px;font-size:13px;text-align:left;}
.pb{font-size:13px;border-collapse:collapse;}
.pb th{font-weight:bold;text-align:center;border:1px solid #333333;padding:2px;}
.pb td{border:1px solid #333333;padding:2px;}
  </style>
</head>
<body>
    <script type="text/javascript">
        document.write(window.dialogArguments);
        window.print();
    </script>
</body>
</html>
bubuko.com,布布扣

 

调用方式如:

<a href="javascript:void(0);" onclick="CreateFormPage(‘打印测试‘, $(‘#grid‘));">打印</a>

 

easyui的datagrid打印(转),布布扣,bubuko.com

easyui的datagrid打印(转)

标签:style   c   class   blog   code   java   

原文地址:http://www.cnblogs.com/jieli/p/easyui_datagrid.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!