1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Data; 8 using Stimulsoft.Report; 9 using Stimulsoft.Report.Components; 10 using Stimulsoft.Report.Print; 11 using Stimulsoft.Report.Export; 12 using System.IO; 13 using System.Net.Mail; 14 using System.Text; 15 using System.Net; 16 17 public class applicationStart 18 { 19 public static bool isshowlogo = false; 20 public static string orderid = ""; 21 public static DataTable dthead; 22 public static DataTable dtmessage; 23 } 24 25 public partial class StimulReport : System.Web.UI.Page 26 { 27 double left = 0, right = 0, top = 0, bottom = 20; 28 29 protected void Page_Load(object sender, EventArgs e) 30 { 31 if (!Page.IsPostBack) 32 { 33 try 34 { 35 string aa = Request.QueryString["printno"]; 36 if (aa == null || aa == "") 37 throw new Exception(); 38 applicationStart.orderid = aa; 39 } 40 catch 41 { 42 return; 43 } 44 try 45 { 46 applicationStart.isshowlogo = Convert.ToBoolean(Request.QueryString["isshowlogo"]); 47 48 } 49 catch 50 { 51 } 52 GetSource(); 53 } 54 ShowReport(applicationStart.isshowlogo); 55 } 56 57 private void ShowReport(bool isshowlogo) 58 { 59 if (applicationStart.isshowlogo) 60 { 61 this.Button2.Text = "HideLogo"; 62 } 63 else 64 { 65 this.Button2.Text = "ShowLogo"; 66 } 67 68 string filepath = Server.MapPath("~/Report_1.mrt"); 69 StiReport stireport = new StiReport(); 70 stireport.Load(filepath); 71 72 stireport.RegData("datasource", applicationStart.dtmessage); 73 //设置报表内控件状态 74 StiFooterBand fb = stireport.Pages[0].Components["FooterBand1"] as StiFooterBand; 75 StiText st = fb.Components["Text47"] as StiText; 76 st.Enabled = applicationStart.dthead.Rows[0]["looksampletype"].ToString() == "0" ? false : true; 77 78 StiPageHeaderBand head = stireport.Pages[0].Components["PageHeaderBand1"] as StiPageHeaderBand; 79 StiImage imglogo1 = head.Components["Image1"] as StiImage; 80 imglogo1.Enabled = applicationStart.isshowlogo; 81 82 StiPageFooterBand footer = stireport.Pages[0].Components["PageFooterBand1"] as StiPageFooterBand; 83 StiImage imglogo2 = footer.Components["Image2"] as StiImage; 84 imglogo2.Enabled = applicationStart.isshowlogo; 85 86 //设置页边距 87 stireport.Pages[0].Margins = new StiMargins(left, right, top, bottom); 88 89 stireport.Compile(); 90 //设置报表内的参数值 91 stireport["code"] = applicationStart.dthead.Rows[0]["code"].ToString(); 92 stireport["orderno"] = applicationStart.dthead.Rows[0]["orderno"].ToString(); 93 stireport["price"] = applicationStart.dthead.Rows[0]["price"].ToString(); 94 stireport["discountprice"] = applicationStart.dthead.Rows[0]["discountprice"].ToString(); 95 stireport["tobefinishstr"] = applicationStart.dthead.Rows[0]["tobefinishstr"].ToString(); 96 stireport["createdate"] = applicationStart.dthead.Rows[0]["createdate"].ToString(); 97 stireport["contact"] = applicationStart.dthead.Rows[0]["contact"].ToString(); 98 stireport["companyname"] = applicationStart.dthead.Rows[0]["companyname"].ToString(); 99 stireport["tel"] = applicationStart.dthead.Rows[0]["tel"].ToString(); 100 stireport["fax"] = applicationStart.dthead.Rows[0]["fax"].ToString(); 101 stireport["mobile"] = applicationStart.dthead.Rows[0]["mobile"].ToString(); 102 stireport["address"] = applicationStart.dthead.Rows[0]["address"].ToString(); 103 stireport["email"] = applicationStart.dthead.Rows[0]["email"].ToString(); 104 stireport["deliverytypeenname"] = applicationStart.dthead.Rows[0]["deliverytypeenname"].ToString(); 105 stireport["name"] = applicationStart.dthead.Rows[0]["name"].ToString(); 106 stireport["customermemo"] = applicationStart.dthead.Rows[0]["customermemo"].ToString(); 107 stireport["looksampletypestr"] = applicationStart.dthead.Rows[0]["looksampletypestr"].ToString(); 108 109 viewer1.Report = stireport; 110 } 111 112 private void GetSource() 113 { 114 string headsql = "select orderno, tobefinishdate, so.price,so.discountprice, tobefinishstr,so.deliverydate,createdate ,so.contact,so.companyname,so.tel,so.fax,so.mobile,so.address,so.looksampletype, " + 115 "so.orderid, so.email,so.code, sales.username as salename ,openso.username as openname ,base_delivery_type.deliverytypeenname,base_delivery_type.shiptypename,user_position.positionname," + "name,so.discountoffflag,so.customermemo from so ,user as sales,user as openso ,base_delivery_type,user_position ,customer,customer_discount " + 116 "where so.userid=sales.userid and so.opuserid=openso.userid and base_delivery_type.deliverytypeid=so.deliverytypeid " + 117 "and so.positionid=user_position.positionid and customer.discountid=customer_discount.discountid " + 118 "and so.customerid=customer.customerid and so.orderid=" + applicationStart.orderid; 119 120 string messagesql = "SELECT *from (" + 121 "select jobno,product.productname,enproductname,so_detail.printnum,sampleflag,socontent as jobcontent , printprice , " + 122 "sodetailid as sortno,so.customermemo as memo " + 123 "From so_detail ,so,product where so_detail.deleteflag=0 and so.orderid=so_detail.orderid and " + 124 "product.productid=so_detail.productid and so.orderid= " + applicationStart.orderid + 125 " union all " + 126 "select ‘‘ as jobno , ‘Delivery‘ as productname ,‘Delivery‘ as enproductname , ‘ ‘ as printnum ,‘ ‘ as sampleflag , ‘‘ as jobcontent ,price ," + 127 "‘1‘ as sortno ,address as memo from so_delivery where orderid= " + applicationStart.orderid + 128 " union all " + 129 "select ‘‘ as jobno , ‘PostProcess‘ as productname ,‘PostProcess‘ as enproductname, outsidenum as printnum ,‘ ‘ as sampleflag , postprocessname, costamount " + 130 ", so_detail.sodetailid as sortno ,concat(memo,memostr) as memo From so_detail_outside,so ,so_detail where so.orderid=so_detail.orderid and so_detail.deleteflag=0 " + 131 "and so_detail.sodetailid=so_detail_outside.sodetailid and so.orderid= " + applicationStart.orderid + 132 " union all " + 133 "select ‘‘ as jobno , ‘OtherItem‘ as productname ,‘OtherItem‘ as enproductname , ‘ ‘ as printnum ,‘ ‘ as sampleflag , pricenamecn, so_detail_price.price " + 134 ", so_detail.sodetailid as sortno ,‘‘ as memo From so_detail_price,so ,so_detail where so.orderid=so_detail.orderid and so_detail.deleteflag=0 " + 135 "and so_detail.sodetailid=so_detail_price.sodetailid and so.orderid= " + applicationStart.orderid + 136 " union all " + 137 "select ‘‘ as jobno , offername as productname ," + 138 "‘Discountinfo‘ as enproductname , ‘ ‘ as printnum ,‘ ‘ as sampleflag , offer_so_history.offermemo as discountmemo, -offer_so_history.discountprice as price , " + 139 "‘0‘ as sortno , offer_so_history.offername as memo From offer_so_history,so where so.orderid=offer_so_history.orderid and so.deleteflag=0 " + 140 "and so.orderid=" + applicationStart.orderid + " ) as itemlist order by sortno desc"; 141 DataModule dm = DataModule.GetDataModule(); 142 applicationStart.dthead = dm.QuerySql(headsql); 143 applicationStart.dtmessage = dm.QuerySql(messagesql); 144 DataTable dt = applicationStart.dtmessage; 145 146 applicationStart.dthead.Columns.Add(new DataColumn("looksampletypestr", typeof(string))); 147 applicationStart.dthead.Columns.Add(new DataColumn("isshowdiscountprice", typeof(string))); 148 if (applicationStart.dthead.Rows.Count > 0) 149 { 150 if (applicationStart.dthead.Rows[0][2].ToString() == applicationStart.dthead.Rows[0][3].ToString()) 151 { 152 applicationStart.dthead.Rows[0]["isshowdiscountprice"] = 0;//false 153 } 154 else 155 { 156 applicationStart.dthead.Rows[0]["isshowdiscountprice"] = 1;//true 157 } 158 } 159 160 foreach (DataRow dr in applicationStart.dthead.Rows) 161 { 162 if (dr["looksampletype"].ToString() == "0") 163 { 164 dr["looksampletypestr"] = "不打稿"; 165 } 166 else if (dr["looksampletype"].ToString() == "1") 167 { 168 dr["looksampletypestr"] = "打稿"; 169 } 170 else 171 { 172 dr["looksampletypestr"] = ""; 173 } 174 } 175 } 176 177 protected void Button1_Click(object sender, EventArgs e) 178 { 179 SendEmail(this.DropDownList1.SelectedValue, this.viewer1.Report, "aaa@163.com", this.TextBox1.Text, "Report[" + this.DropDownList1.SelectedValue + "]" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "", "smtp.163.com", 25, "aaa@163.com", "123456"); 180 } 181 182 private void GetFormat(string filetype, ref StiExportFormat sf, ref string filename) 183 { 184 switch (filetype) 185 { 186 case "pdf": sf = StiExportFormat.Pdf; filename = "report.pdf"; break; 187 case "jpeg": sf = StiExportFormat.ImageJpeg; filename = "report.jpeg"; break; 188 case "gif": sf = StiExportFormat.ImageGif; filename = "report.gif"; break; 189 case "excel": sf = StiExportFormat.Excel; filename = "report.xls"; break; 190 case "word2007": sf = StiExportFormat.Word2007; filename = "report.docx"; break; 191 } 192 } 193 194 public void SendEmail(string filetype, StiReport report, string fromaddress, string toaddress, string subject, string messageBody, string host, int port, string username, string password) 195 { 196 using (MemoryStream ms = new MemoryStream()) 197 { 198 string filename = ""; 199 StiExportFormat sef = StiExportFormat.Pdf; 200 GetFormat(filetype, ref sef, ref filename); 201 report.ExportDocument(sef, ms); 202 ms.Seek(0, SeekOrigin.Begin); 203 204 //使用自己的邮件发送机制 205 System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(ms, filename); 206 207 MailMessage item = new MailMessage(fromaddress, toaddress); 208 item.Subject = subject; 209 item.Body = messageBody; 210 item.Attachments.Add(attachment); 211 212 SmtpClient smtp = new SmtpClient(host, port); 213 smtp.UseDefaultCredentials = false; 214 smtp.Credentials = new System.Net.NetworkCredential(username, password); 215 smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 216 smtp.Send(item); 217 ms.Close(); 218 } 219 ClientScript.RegisterStartupScript(GetType(), "", "<script>showmessage();</script>"); 220 } 221 protected void Button2_Click(object sender, EventArgs e) 222 { 223 applicationStart.isshowlogo = !applicationStart.isshowlogo; 224 ShowReport(applicationStart.isshowlogo); 225 } 226 }
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="StimulReport.aspx.cs" Inherits="StimulReport" %> <%@ Register Assembly="Stimulsoft.Report.Web, Version=2013.3.1800.0, Culture=neutral, PublicKeyToken=ebe6666cba19647a" Namespace="Stimulsoft.Report.Web" TagPrefix="cc1" %> <!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 runat="server"> <title></title> <style type="text/css"> .style1 { width: 498px; } </style> <script language="javascript" type="text/javascript"> function showmessage() { document.getElementById("divmessage").style.display = "block"; setTimeout("document.getElementById(‘divmessage‘).style.display =‘none‘;", 2000); } </script> </head> <body> <form id="form1" runat="server"> <table style="width: 100%"> <tr> <td class="style1"> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="ShowLogo" /> Email:<asp:TextBox ID="TextBox1" runat="server">huang_198906@163.com</asp:TextBox> <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem Selected="True">pdf</asp:ListItem> <asp:ListItem>jpeg</asp:ListItem> <asp:ListItem>gif</asp:ListItem> <asp:ListItem>excel</asp:ListItem> <asp:ListItem>word2007</asp:ListItem> </asp:DropDownList> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Send Email" /> </td> <td> <div id="divmessage" style="width: 69px; background-color: #BDB8FA; display: none"> 發送成功 </div> </td> </tr> </table> <cc1:StiWebViewer ID="viewer1" runat="server" ShowBookmarksButton="False" ShowParametersButton="False" /> <cc1:StiWebReport ID="report1" runat="server" /> </form> </body> </html>