自定義列印easyui中datagrid資料框中的資料
阿新 • • 發佈:2018-12-21
1.js中,自定義列印程式碼
/** * @Description :自定義列印datagrid解決超過紙張寬度window.print()不能全顯問題 * 解決方法:將datagrid轉換成table嵌入到iframe進行列印 * @author : bjh * @param : strPrintName 列印任務名, printDatagrid 要列印的datagrid * @return : * @exception : * @date : 2018/11/15 20:34 */ function CreateFormPage(strPrintName, printDatagrid) { var tableString = '<table cellspacing="0" class="pb" width="100%" border="1em">'; // 得到frozenColumns物件 var frozenColumns = printDatagrid.datagrid("options").frozenColumns; // 得到columns物件 var columns = printDatagrid.datagrid("options").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{ //此處有更改,設定成如果讀取欄位為null,設定自動填充0 if(rows[i][nl[j].f] == null){ if(i != rows.length-1) tableString += 0; }else { tableString += rows[i][nl[j].f]; } } tableString += '</td>'; }); tableString += '\n</tr>'; } tableString += '\n</table>'; // 生成並列印ifrme var f = document.getElementById('printf'); f.contentDocument.write(tableString); f.contentDocument.title = strPrintName; f.contentDocument.close(); f.contentWindow.print(); }
2.js中,函式的呼叫
CreateFormPage('xxxx表', $('#grid'));
3.列印頁面調出成功!