在主页面的datagride中定义打印按钮的函数
$('#dgs').datagrid({ url: null, title: "包详情", toolbar: [{ text: '新增', iconCls: 'icon-add', handler: function () { addIDs(); } }, '-', { text: '删除', iconCls: 'icon-remove', handler: function () { //删除 delIDs(); } }, '-', { text: '保存', iconCls: 'icon-save', handler: function () { saveIDs(); } },'-', { text: '刷新', iconCls: 'icon-reload', handler: function () { //refresh('dg', 'MES_MO_PK', '1000000016', 'admin'); refIDs(); } }, "-",{ text: '打印包', iconCls: 'icon-print', handler: function () { //refresh('dg', 'MES_MO_PK', '1000000016', 'admin'); Btn_PrintPack(); } }, ], columns: [[ { field: 'ck', checkbox: true }, { field: 'cInvCode', title: '存货编码', width: 100 }, { field: 'cBatch', title: '批号', width: 100 }, { field: 'cBatchProperty6', title: '基材', width: 100 }, { field: 'cPKCode', title: '包号', width: 100, editor: 'textbox' }, { field: 'iQuantity', title: '数量', width: 100,editor: 'textbox', formatter: function (val, rowData, rowIndex) { if (val != null) return parseFloat(val).toFixed(2); } }, { field: 'cDefine1', title: '自定义I', width: 100, editor: 'textbox' }, { field: 'cDefine2', title: '自定义II', width: 100, editor: 'textbox' }, { field: 'cDefine3', title: '自定义III', width: 100, editor: 'textbox' }, { field: 'Autoid', title: '唯一标识', width: 100, hidden: true }, ]] });
打印在主页面上的具体实现
function Btn_PrintPack() { var dgrow = $('#dg').datagrid('getSelected'); var dgsRows = $('#dgs').datagrid('getSelections'); if (dgrow === null || dgsRows === null) { alert("请选择行!"); return; } var outArray = new Array(); for (var i = 0; i < dgsRows.length; i++) { outArray.push({ "cInvName": dgrow.cInvName, "cInvCode": dgsRows[i].cInvCode, "cBatch": dgsRows[i].cBatch, "cBatchProperty6": dgsRows[i].cBatchProperty6, "cPKCode": dgsRows[i].cPKCode, "iQuantity": dgsRows[i].iQuantity, "Autoid": dgsRows[i].Autoid }); } var a = JSON.stringify(outArray); //alert(a); sessionStorage.setItem("k", a); var _url = "../../../GenerateQRCodeTag/EntryBillforPurchaseTagShow.html" window.open(_url, '_blank', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); }
EntryBillforPurchaseTagShow页面的具体实现
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <meta charset="utf-8" /> <link href="../jquery-easyui-1.5.3/demo/demo.css" rel="stylesheet" /> <link href="../jquery-easyui-1.5.3/themes/icon.css" rel="stylesheet" /> <link href="../jquery-easyui-1.5.3/themes/default/easyui.css" rel="stylesheet" /> <style> @media print{ .toolbar { display:none; } } .toolbar{ border:1px solid #6A9BFA; background:#E8F7E8; } .paging { page-break-after:always } td { font-size:12px; color:#000000; } </style> <!--<script src="../jquery-easyui-1.5.3/jquery.easyui.min.js"></script>--> <script src="../jquery-easyui-1.5.3/jquery.min.js"></script> <script type="text/javascript"> $(function () { initialHtmlPage(); }); function initialHtmlPage() { var getData = sessionStorage.getItem("k"); $.post("../../../GenerateQRCodeTag/SingleAndMutiplySelectionPU.ashx?test=1", getData, function (data) { $("#a").html(data); }) } </script> </head> <body style="overflow-y:auto;height:800px"> <div style="margin:0 auto;width:700px;"> <div class="toolbar"> <object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" width="0"></object> <input type="button" name="name" value="打印" onclick="document.all.WebBrowser.ExecWB(7,1)" /> </div> <table id="a" cellpadding="0" cellspacing="0" style="margin:0;padding:0;text-align:right;font-size:20px" width="650" height="100"> </table> </div> </body> </html>
SingleAndMutiplySelectionPU一般处理程序实现的具体
public class SingleAndMutiplySelectionPU : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; StringBuilder sb = new StringBuilder(); string test = context.Request.QueryString["test"]; { if (test == "1") { List<SelectList> dicParameter = GetParameter(context); for (int i = 0; i < dicParameter.Count; i++) { sb.AppendFormat("<tr><td width ='250px'> 物料名称:<ins id = 'nameOfStorage'>{0}</ins></td><td width = '250px'> 重量:<ins id = 'valueOfQuantity'>{1}</ins></td><td rowspan = '3' align = 'center'><img id = 'QRCodePic' src =../../../GenerateQRCodeTag/GetQRCodeUrl.ashx?cType=PU&StorageName={0}&StorageCode={2}&Material={3}&Batch={4}&PKCode={5}&IQuantity={1}&AutoID={6} style = 'height:100px;width:100px;margin-top:3px' /></td></tr>", dicParameter[i].cInvName, dicParameter[i].iQuantity, dicParameter[i].cInvCode, dicParameter[i].cBatchProperty6, dicParameter[i].cBatch, dicParameter[i].cPKCode, dicParameter[i].Autoid); sb.AppendFormat("<tr><td width = '250px'> 物料批号:<ins id = 'batchOfStorage'>{0}</ins></td><td width= '250px'> 基材:<ins id = 'codeOfMaterial'>{1}</ins></td></tr>", dicParameter[i].cBatch, dicParameter[i].cBatchProperty6); sb.AppendFormat("<tr><td width = '250px'> 仓库:<ins id ='wareHouse'>{0}</ins></td><td width ='250px'> 时间:<ins id = 'valueOfTime'>{1}</ins></td></tr>", 55, new DateTime().ToShortDateString()); sb.AppendFormat("<tr class='paging'></tr>"); } } } context.Response.Write(sb.ToString()); } private List<SelectList> GetParameter(HttpContext context)//获取前台传过来的流数据 { StreamReader reader = new StreamReader(context.Request.InputStream); String strJson = HttpUtility.UrlDecode(reader.ReadToEnd()); JavaScriptSerializer jss = new JavaScriptSerializer(); List<SelectList> dicParameter = jss.Deserialize<List<SelectList>>(strJson); return dicParameter; } public bool IsReusable { get { return false; } } } public partial class SelectList//接收ajax传过来的json对象数据 { public string cInvName { get; set; } public string cInvCode { get; set; } public string cBatch { get; set; } public string cBatchProperty6 { get; set; } public string cPKCode { get; set; } public string iQuantity { get; set; } public string Autoid { get; set; } }
处理二维码图片的一般处理程序
public void GenerateQRCode(string str, HttpContext context) { Bitmap bt; string enCodeString = str; QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; qrCodeEncoder.QRCodeScale = 5; qrCodeEncoder.QRCodeVersion = 41; qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; bt = qrCodeEncoder.Encode(enCodeString.ToString(), Encoding.UTF8); //string path = "/tempImage/" + Guid.NewGuid().ToString() + ".jpg"; //string strPath = context.Request.MapPath(path); //bt.Save(strPath); //return path; MemoryStream stream = new MemoryStream(); bt.Save(stream, ImageFormat.Jpeg); context.Response.Clear(); context.Response.ContentType = "image/jpeg"; context.Response.BinaryWrite(stream.ToArray()); #region //var encoder = new QrEncoder(ErrorCorrectionLevel.M); //int moduleSize = 9; //QrCode qrCode = encoder.Encode(str); //GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(moduleSize, QuietZoneModules.Two), Brushes.Black, Brushes.White); //MemoryStream memoryStream = new MemoryStream(); //render.WriteToStream(qrCode.Matrix, ImageFormat.Jpeg, memoryStream); //return memoryStream; #endregion }
context.Response.ContentType = "text/plain"; string type = context.Request.QueryString["cType"]; string linkStr=null; switch (type) { case "PU": linkStr = GenerateStrContentPU(context); break; } GenerateQRCode(linkStr, context);