国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
在MVC2.0使用Lodop為WEB打印提出完美解決方案

通過好友CallHot介紹Lodopweb打印控件。由于是國人開發(fā)的,故這兩天認真了研究下,打算在未來的項目中使用?,F(xiàn)將學習成果與園友分享。如果存在不足的地方,希望您指出。

具體的實現(xiàn)步驟如下:

     一、準備工作


        1.MVC2.0 + jQuery1.4.1 開發(fā)環(huán)境。

        2.Lodop web 打印控件,官方地址:http://mtsoftware.v053.gokao.net/download.html  (注:國人開發(fā),免費軟件)。

        3.StringTemplate,C#開源模板引擎。官方地址:http://www.stringtemplate.org。

     本文主要給出WEB下打印步驟實現(xiàn)方案,具體的技術實現(xiàn)細節(jié),請查看官方API。lodop,stringtemplate 官方已給出了詳盡的文檔說明。

    二、MVC2.0使用StringTemplate構造打印模板


       StringTemplate 文中簡稱st。網(wǎng)絡上有相關文檔介紹st效率還不錯。本文將st作為報表打印模板。在實際項目開發(fā)中將繁雜的報表打印工作內(nèi)容,部分分配給美工來處理。而開發(fā)人員只需提供數(shù)據(jù)源接口。使用st可以減輕開發(fā)人員的工作量。并將報表開發(fā)任務分工更細致。給項目帶來的好處就不多論了。具體實現(xiàn)如下:

      1.在MVC2.0項目中引用st核心dll:

      2.建立st的模板文件,template.st(st模板專用文件):

也可以認為st文件就是一個普通的html文件。該部分主要由美工負責處理,比如CSS。

       3.在MVC2.0 controller 內(nèi)建立提供數(shù)據(jù)源的 JsonResult:

  1. public JsonResult Print() 
  2.     //構造打印數(shù)據(jù) 
  3.     List<CustomerTest> list = new List<CustomerTest>(); 
  4.     for (int i = 0; i < 100; i++) 
  5.     { 
  6.         list.Add(new CustomerTest { CustomerName = "candy" + i, CustomerAddress = "思明區(qū)" + i, CustomerPhone = "13148484855" + i }); 
  7.         list.Add(new CustomerTest { CustomerName = "linda" + i, CustomerAddress = "湖里區(qū)" + i, CustomerPhone = "13847487545" + i }); 
  8.         list.Add(new CustomerTest { CustomerName = "ellie" + i, CustomerAddress = "海昌區(qū)" + i, CustomerPhone = "1359984665" + i }); 
  9.     } 
  10.  
  11.     //StringTemplate 打印模板文件,實際項目中為提高程序效率,應將打印模板文件緩存。 
  12.     string serverPath = System.Web.HttpContext.Current.Server.MapPath("~"); 
  13.     string path = Path.Combine(serverPath, @"PrintTemplate\"); 
  14.  
  15.     StringTemplateGroup group = new StringTemplateGroup("myGroup", path, typeof(TemplateLexer)); 
  16.     StringTemplate st = group.GetInstanceOf("template"); 
  17.     st.SetAttribute("customer", list); 
  18.  
  19.     //為打印提供html相關超文本內(nèi)容。 
  20.     StringBuilder sb = new StringBuilder(); 
  21.     sb.Append(@"<html xmlns='http://www.w3.org/1999/xhtml' lang='zh-CN'>"); 
  22.     sb.Append("<head>"); 
  23.     sb.Append(@"<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />"); 
  24.     sb.Append(@"<meta http-equiv='Content-Language' content='zh-CN' />"); 
  25.     string cssContent = System.IO.File.ReadAllText(Path.Combine(serverPath, @"Content\CSS\CSSForPrint.css")); 
  26.     sb.Append(@"<style type='text/css'>"); 
  27.     sb.Append(cssContent); 
  28.     sb.Append(@"</style>"); 
  29.     sb.Append("</head>"); 
  30.     sb.Append("<body>"); 
  31.     sb.Append(st.ToString()); 
  32.     sb.Append(" "); 
  33.     sb.Append("</body>"); 
  34.     sb.Append("</html>"); 
  35.  
  36.     return Json(new { success = true, data = sb.ToString() }, JsonRequestBehavior.AllowGet); 

其中CustomerTest是自定義數(shù)據(jù)類,已經(jīng)給出詳細的注釋了。仔細閱讀不難理解。

      4.MVC2.0 view html head 內(nèi)加入js 代碼:

  1. <asp:Content ID="Content3" ContentPlaceHolderID="Head" runat="server"> 
  2.     <script language="javascript" src="CheckActivX.js"></script> 
  3.     <object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width="0" 
  4.         height="0"> 
  5.     </object> 
  6.     <script type="text/javascript"> 
  7.    
  8.         function prn1_preview(data) { 
  9.             LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_打印表格"); 
  10.             //報表標題 
  11.             LODOP.ADD_PRINT_HTM(50, 300, 330, 300, 
  12.                       "<font color ='black' size ='6'>客戶列表</font><font color ='blue' size ='2'>(制表人:張三)</font>"); 
  13.             //報表內(nèi)容打印。 
  14.             LODOP.ADD_PRINT_TABLE(100, 150, 760, 900, data); 
  15.             LODOP.PREVIEW(); 
  16.         }; 
  17.    
  18.         $(function () { 
  19.             $("#btnPrint").click(function () { 
  20.                 var url = '<%=Url.Action("Print","Home") %>'
  21.                 $.ajax({ 
  22.                     type: "POST", 
  23.                     url: url, 
  24.                     cache: false, 
  25.                     dataType: 'json', 
  26.                     success: function (result) { 
  27.                         if (result.success) { 
  28.                             prn1_preview(result.data); 
  29.                         } 
  30.                     } 
  31.                 }); 
  32.             }); 
  33.         }) 
  34.     </script> 
  35. </asp:Content> 

三、運行截圖

最后一頁打印預覽:

打印機橫向打?。?/p>

 四、注意事項
     本文給出的web打印方案需要讀者對MVC2.0 、jQuery 、StringTemplate 有一定的了解。另外本例只是在IE下實現(xiàn)了WEB打印

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
從零開始學習 ASP.NET MVC 1.0 (五) ViewEngine 深入解析與應用實例
基于StringTemplate的視圖 - Fight ! - 博客園
ASP.NET MVC3 系列教程
ASP.NET MVC的JavaScriptResult
How ASP.NET MVC Works?
ASP.NET MVC 3 (一) 新的視圖引擎Razor
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服