1.为了报表的松耦合,代码重用度高,先在数据库中建表
IsLandscape:在网页呈现的时候是横向的还是纵向的。
ReportName:报表文件的路径
ExportName:输出名称
HeadTableName:主数据源的名称,以后依次类推
2.新建强类型数据集
根据需求建强类型数据集,如果是单一的数据库可以保留adapter,因为我做项目事用的是多数据库这里就不用adapter。
3..新建rdlc报表,根据需求每种功能要做一个报表。数据源设置好以后,像刚才新建的表内添加内容,注意数据库中那几个TableName和报表中的数据源名称一样就行。
4..新建报表显示页面
- <%@ Page Language="C#" MasterPageFile="~/MspDemo.master" AutoEventWireup="true" CodeFile="ReportView.aspx.cs"
- EnableEventValidation="false" Inherits="ReportsPrint_ReportView" Title="Untitled Page" %>
- <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
- Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
- <%@ Register Assembly="CrystalDecisions.Web, Version=10.2.3600.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"
- Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
- <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
- <mce:script type="text/javascript" language="javascript"><!--
- function doPrint()
- {
- document.getElementById('ctl00$ContentPlaceHolder1$ReportViewer1$ctl01$ctl07$ctl00$ctl00$ctl00').click();
- return false;
- }
- // --></mce:script>
- <div id="divBody" style="width: 100%;" runat="server">
- <table style="width: 100%;">
- <tr>
- <td colspan="2" style="background-image: url('../style/image/title_bg.jpg'); width: 100%;
- height: 10px;" align="left">
- <asp:Image ID="Image1" runat="server" ImageUrl="~/style/image/ico_2.gif" />
- <asp:Label ID="lblTitle" runat="server" Font-Bold="true" Text="报表查看"></asp:Label>
- </td>
- </tr>
- </table>
- <table style="width: 100%;" id="tbBody" runat="server">
- <tr style="width: 100%;">
- <td style="width: 100%;">
- <table style="width: 100%;" border="1" cellpadding="4" cellspacing="1">
- <tr style="width: 100%; height: 21px">
- <td style="width: 100%; height: 1px;" class="background:#EDEFF1; line-height:18px;"
- align="center" colspan="2">
- <div style="" id="ReportMenu" runat="server">
- <asp:LinkButton ID="lBtnFirst" runat="server" OnClick="lBtnFirst_Click" Visible="False">
- <img id="imgFirst" runat="server" src="../style/image/page-first.gif" mce_src="style/image/page-first.gif" style="border: 0px;" mce_style="border: 0px;" /></asp:LinkButton>
- <asp:LinkButton ID="lbtnNext" runat="server" OnClick="lbtnNext_Click" Visible="False">
- <img id="imgNext" runat="server" src="../style/image/page-next.gif" mce_src="style/image/page-next.gif" style="border: 0px;" mce_style="border: 0px;" /></asp:LinkButton>
- <asp:TextBox ID="txtPages" runat="server" Height="15px" Width="20px" Font-Size="Small"
- Visible="False"></asp:TextBox>
- <asp:Label ID="lblTotalPage" runat="server" Text="/1" Font-Size="Small" Visible="False"></asp:Label>
- <asp:LinkButton ID="lBtnPrevious" runat="server" OnClick="lBtnPrevious_Click" Visible="False">
- <img id="imgPrevious" runat="server" src="../style/image/page-prev.gif" mce_src="style/image/page-prev.gif" style="border: 0px;" mce_style="border: 0px;" /></asp:LinkButton>
- <asp:LinkButton ID="lBtnLast" runat="server" OnClick="lBtnLast_Click" Visible="False">
- <img id="imgLast" runat="server" src="../style/image/page-last.gif" mce_src="style/image/page-last.gif" style="border: 0px;" mce_style="border: 0px;" /></asp:LinkButton>
- <%-- --%>
- 显示比例:
- <asp:DropDownList ID="ddlPageSize" runat="server" AutoPostBack="true" Height="20"
- Font-Size="Small" OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged" Width="108px">
- </asp:DropDownList>
- <asp:LinkButton ID="lBtnRefresh" runat="server" OnClick="lBtnRefresh_Click" Visible="False">
- <img id="img1" runat="server" src="../style/image/refresh.gif" mce_src="style/image/refresh.gif" style="border: 0px;" mce_style="border: 0px;" /></asp:LinkButton>
- <%-- --%>
- <asp:Label Width="60px" ID="Label2" runat="server" Text="搜索打印机" Visible="False"></asp:Label><%-- --%>
- <asp:DropDownList ID="ddlPrintSearch" Visible="false" runat="server" Width="238px"
- Font-Size="Small">
- </asp:DropDownList><%-- --%>
- <asp:Button ID="btnPrintSet" runat="server" OnClientClick="return doPrint()" Text="打印"
- Width="65px" CssClass="btn" Font-Size="Small" OnClick="btnPrintSet_Click" Visible="True" />
- <asp:Button ID="btnExcel" runat="server" Text="导出Excel" CssClass="btn" Font-Size="Small"
- OnClick="btnExcel_Click" />
- <asp:Button ID="btnPDF" runat="server" Text="导出PDF" CssClass="btn" Font-Size="Small"
- OnClick="btnPDF_Click" />
- <asp:Button ID="btnReturn" runat="server" Text="关闭" CssClass="btn" Font-Size="Small"
- OnClick="btnReturn_Click" />
- </div>
- </td>
- </tr>
- <tr>
- <td>
- <div id="divReport" runat="server" style="table-layout: auto; overflow: auto; height: 29.7cm">
- <rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="100%" BorderStyle="None"
- Font-Names="Verdana" Font-Size="8pt" BackColor="White" SizeToReportContent="True"
- Style="max-height: 1400; padding-bottom: inherit; page-break-inside: auto; page-break-after: always;"
- Height="1051px">
- <LocalReport>
- <DataSources>
- <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="ReportView_StockOrder" />
- <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="ReportView_StockOrderDetail" />
- </DataSources>
- </LocalReport>
- </rsweb:ReportViewer>
- <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData"
- TypeName="ReportViewTableAdapters."></asp:ObjectDataSource>
- </div>
- <%--<CR:CrystalReportSource ID="RptReportView" runat="server">
- <Report FileName="E:/MySystem/SYS.View/ReportsPrint/RptReportView.rpt">
- </Report>
- </CR:CrystalReportSource>
- <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" Height="1121px" ReportSourceID="RptReportView" Width="893px" />
- --%>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </div>
- </asp:Content>
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.Adapters;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Data.SqlClient;
- using Microsoft.Reporting.WebForms;
- using System.IO;
- using System.Text;
- using System.Drawing.Printing;
- using System.Drawing.Imaging;
- using System.DirectoryServices;
- using System.Collections.Generic;
- using SYS.Biz.InboundInfo;
- using SYS.Cmn;
- using SYS.Info.ReportsPrint;
- using SYS.Biz.ReportsPrint;
- using SYS.View;
- using SYS.Info.InboundInfo;
- public partial class ReportsPrint_ReportView : SYS.View.PageBase
- {
- private static string sSql = "";
- private static ReportsInfo reportsinfo = new ReportsInfo();
- private int m_currentPageIndex;
- private IList<Stream> m_streams;
- protected void Page_Load(object sender, EventArgs e)
- {
- Response.Buffer = true;
- Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
- Response.Expires = 0;
- Response.CacheControl = "no-cache";
- Response.Cache.SetNoStore();
- Page.Response.Expires = 0;
- if (!IsPostBack)
- {
- GetData(true);// /获得报表文件名和导出文件名
- ShowReport();
- if (reportsinfo.IsLandscape)
- {
- ddlPageSize.Items.Clear();
- ddlPageSize.Items.Insert(0, new ListItem("按200%显示", "204"));
- ddlPageSize.Items.Insert(1, new ListItem("按150%显示", "153"));
- ddlPageSize.Items.Insert(2, new ListItem("按100%显示", "89"));
- ddlPageSize.Items.Insert(3, new ListItem("按50%显示", "51"));
- ddlPageSize.Items.Insert(4, new ListItem("按25%显示", "26"));
- this.ddlPageSize.SelectedValue = "89";
- }
- else
- {
- ddlPageSize.Items.Clear();
- ddlPageSize.Items.Insert(0, new ListItem("按200%显示", "270"));
- ddlPageSize.Items.Insert(1, new ListItem("按150%显示", "202"));
- ddlPageSize.Items.Insert(2, new ListItem("按100%显示", "130"));
- ddlPageSize.Items.Insert(3, new ListItem("按50%显示", "67"));
- ddlPageSize.Items.Insert(4, new ListItem("按25%显示", "34"));
- this.ddlPageSize.SelectedValue = "130";
- }
- this.ReportViewer1.Attributes.Add("style", "align:center;");
- this.txtPages.Text = "1";
- PageShowSize();
- PageChange();
- }
- }
- //获得reportsinfo的具体内同,如果是第一次使用,则从数据库中调取,否则从session里边调取
- private void GetData(bool isfirst)
- {
- try
- {
- //isfirst为True则说明是第一调用该过程,则从数据库中调用,反之则从session里调用
- if (isfirst)
- {
- GetReportsInfo();
- }
- else
- {
- reportsinfo = SessionDataManager.GetMySessionCatch("reportsinfo", this.Context) as ReportsInfo;//从session中取值
- if (reportsinfo == null)
- {
- GetReportsInfo();
- }
- else
- {
- if ((reportsinfo.ReportName.Trim() == null ? "" : reportsinfo.ReportName.Trim()) == "")
- {
- GetReportsInfo();
- }
- if ((reportsinfo.ExportName.Trim() == null ? "" : reportsinfo.ExportName.Trim()) == "")
- {
- GetReportsInfo();
- }
- if ((reportsinfo.HeadTableName.Trim() == null ? "" : reportsinfo.HeadTableName.Trim()) == "")
- {
- GetReportsInfo();
- }
- }
- }
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- //从数据库中获得ReportsInfo的值
- private void GetReportsInfo()
- {
- try
- {
- string type = Request.QueryString["type"].Trim() == null ? "" : Request.QueryString["type"].Trim();
- if (type.Trim() != "" && Util.IsNumber(type.Trim().ToString()))
- {
- reportsinfo = BizReportsInfo.GetInstance().ReportInfoQuery(Convert.ToInt32(type.Trim()));
- }
- else
- {
- ShowErroMessage("传入的报表编号不正确,请检查!");
- }
- SessionDataManager.SetMySessionCatch("reportsinfo", reportsinfo, this.Context);
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- //提示错误信息
- private void ShowErroMessage(string strMessage)
- {
- string strScript = "<mce:script type = 'text/javascript'><!--
- alert(/"" + strMessage + "/");
- // --></mce:script>";
- Page.ClientScript.RegisterStartupScript(this.GetType(), "onclick", strScript);
- return;
- }
- //前后翻页跳转的实现
- private void PageChange()
- {
- if (this.ReportViewer1.CurrentPage == 0)
- {
- this.imgPrevious.Src = "../style/image/page-prev-disabled.gif";
- this.imgFirst.Src = "../style/image/page-first-disabled.gif";
- this.lBtnFirst.Enabled = false;
- this.lBtnPrevious.Enabled = false;
- }
- else
- {
- this.imgPrevious.Src = "../style/image/page-prev.gif";
- this.imgFirst.Src = "../style/image/page-first.gif";
- this.lBtnFirst.Enabled = true;
- this.lBtnPrevious.Enabled = true;
- }
- if (this.ReportViewer1.CurrentPage == this.ReportViewer1.LocalReport.GetTotalPages())
- {
- this.imgNext.Src = "../style/image/page-next-disabled.gif";
- this.imgLast.Src = "../style/image/page-last-disabled.gif";
- this.lbtnNext.Enabled = false;
- this.lBtnLast.Enabled = false;
- }
- else
- {
- this.imgNext.Src = "../style/image/page-next.gif";
- this.imgLast.Src = "../style/image/page-last.gif";
- this.lbtnNext.Enabled = true;
- this.lBtnLast.Enabled = true;
- }
- }
- //页面显示百分比的调整
- private void PageShowSize()
- {
- this.ReportViewer1.ZoomMode = ZoomMode.Percent;
- this.ReportViewer1.ZoomPercent = Convert.ToInt32(this.ddlPageSize.SelectedValue);
- this.ReportViewer1.LocalReport.Refresh();
- //ReportViewer1.AsyncRendering = false;
- }
- /// <summary>
- /// 导出到Excel,PDF
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void ExportFile(string fileType)
- {
- try
- {
- Microsoft.Reporting.WebForms.Warning[] Warnings;//警告列表
- GetData(false);//获取导出文件名称方法
- string[] strStreamIds;
- string strMimeType;
- string strEncoding;
- string strFileNameExtension;
- string deviceInfo = SetsPage();
- string fileName = "unkown";//导出文件名
- string msType = "";//输出流的HTTP MIME类型
- string suffix = "";//文件后缀
- if (fileType.Trim() == "Excel")
- {
- suffix = ".xls";
- msType = "application/ms-excel";
- }
- if (fileType.Trim() == "PDF")
- {
- suffix = ".pdf";
- msType = "application/ms-pdf";
- }
- string strFileFolder = "ReportsPrint";// 位于该文件夹
- // 文件保存的相对路径
- string strUrlPath = "~/" + String.Format("{0}", strFileFolder);
- // 文件的相对路径
- string strMapPath = Server.MapPath(strUrlPath);
- byte[] bytes = this.ReportViewer1.LocalReport.Render(fileType, deviceInfo, out strMimeType, out strEncoding, out strFileNameExtension, out strStreamIds, out Warnings);
- if (reportsinfo.ExportName.Trim() != "")
- fileName = reportsinfo.ExportName.Trim() + suffix;
- else
- ShowErroMessage("导出文件名不能为空,请检查!");
- string strFilePath = strMapPath + @"/SaveFile/" + fileName;
- //检查该文件是否已经存在,如果存在则删除
- DeleteFile(strFilePath);
- using (System.IO.FileStream fileStream = new FileStream(strFilePath, FileMode.Create))
- {
- fileStream.Write(bytes, 0, bytes.Length);
- }
- //Response.Write("<mce:script type="text/javascript"><!--
- window.open('" + ResolveUrl("~/ReportsPrint/SaveFile/"+fileName) + "');
- // --></mce:script>");
- Response.Redirect(string.Format("~/ReportsPrint/SaveFile/{0}", fileName), false);
- /*
- FileInfo file = new FileInfo(strFilePath);
- Response.Clear();
- Response.Charset = "GB2312";
- Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
- // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
- Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));
- // 添加头信息,指定文件大小,让浏览器能够显示下载进度
- Response.AddHeader("Content-Length", file.Length.ToString());
- // 指定返回的是一个不能被客户端读取的流,必须被下载
- Response.ContentType = msType;
- // 把文件流发送到客户端
- Response.Redirect(string.Format("~/ReportsPrint/SaveFile/{0}", fileName), false);
- Response.WriteFile(file.FullName);
- // 停止页面的执行
- HttpContext.Current.ApplicationInstance.CompleteRequest();
- Response.End();*/
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- //显示报表的具体内容
- private void ShowReport()
- {
- try
- {
- string itemid = Request.QueryString["ItemId"].Trim() == null ? "" : Request.QueryString["ItemId"].Trim();
- string sptwo = Request.QueryString["paramtwo"].Trim() == null ? "" : Request.QueryString["paramtwo"].Trim();
- string spthree = Request.QueryString["paramthree"].Trim() == null ? "" : Request.QueryString["paramthree"].Trim();
- string spfour = Request.QueryString["paramfour"].Trim() == null ? "" : Request.QueryString["paramfour"].Trim();
- string spfive = Request.QueryString["paramfive"].Trim() == null ? "" : Request.QueryString["paramfive"].Trim();
- string reportName = "";
- ReportViewer1.Reset();
- //设置为本地报表
- this.ReportViewer1.ProcessingMode = ProcessingMode.Local;
- //指定报表路径
- GetData(false);
- if (reportsinfo.ReportName.Trim() != "")
- reportName = reportsinfo.ReportName.Trim();
- else
- ShowErroMessage("报表名称出错,请检查!");
- ReportViewer1.LocalReport.ReportPath = MapPath(reportName); //MapPath("ReportStockOrder.rdlc");
- AddDataSource();//绑定数据集
- ReportParameter pid = new ReportParameter("paramid", itemid);
- ReportParameter ptwo = new ReportParameter("paramtwo", sptwo);
- ReportParameter pthree = new ReportParameter("paramthree", spthree);
- ReportParameter pfour = new ReportParameter("paramfour", spfour);
- ReportParameter pfive = new ReportParameter("paramfive", spfive);
- ReportViewer1.LocalReport.SetParameters(new ReportParameter[] { pid, ptwo, pthree, pfour, pfive });
- this.ReportViewer1.DataBind();
- ReportViewer1.LocalReport.Refresh();
- this.ReportViewer1.ShowToolBar = true;
- this.ReportViewer1.ShowPrintButton = true;
- this.ReportViewer1.ShowExportControls = false;
- this.ReportViewer1.ShowPageNavigationControls = true;
- this.ReportViewer1.ShowFindControls = false;
- this.ReportViewer1.ShowParameterPrompts = false;
- this.ReportViewer1.ShowRefreshButton = false;
- this.ReportViewer1.ShowZoomControl = false;
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- //导出PDF事件
- protected void btnPDF_Click(object sender, EventArgs e)
- {
- this.ExportFile("PDF");
- }
- //导出Excel事件
- protected void btnExcel_Click(object sender, EventArgs e)
- {
- this.ExportFile("Excel");
- }
- //打印事件
- List<string> imageList = new List<string>();
- protected void btnPrintSet_Click(object sender, EventArgs e)
- {
- imageList.Clear();
- Export();
- //m_currentPageIndex = 0;
- //Print();
- MyStreamDispose();
- string url = "print.aspx";
- string param = "";
- string html = "";
- foreach (string s in imageList)
- {
- if (string.IsNullOrEmpty(param))
- {
- param += s;
- }
- else
- {
- param += "|" + s;
- }
- html += string.Format("<img src="" + ResolveUrl("~/ReportsPrint/SaveFile/{0}") + "" mce_src="" + ResolveUrl("~/ReportsPrint/SaveFile/{0}") + "" style="page-break-before: always;" mce_style="page-break-before: always;" />", s);
- }
- url += "?image=" + param;
- //
- Response.Write("<mce:script type="text/javascript"><!--
- window.open('" + ResolveUrl("~/ReportsPrint/" + url) + "');
- // --></mce:script>");//
- //Response.Redirect(url);
- }
- //创建流
- private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
- {
- imageList.Add(name + "." + fileNameExtension);
- try
- {
- string strFileFolder = "ReportsPrint";// 位于该文件夹
- // 文件保存的相对路径
- string strUrlPath = "~/" + String.Format("{0}", strFileFolder);
- // 文件的相对路径
- string strMapPath = Server.MapPath(strUrlPath);
- string strFilePath = strMapPath + @"/SaveFile/" + name + "." + fileNameExtension;
- DeleteFile(strFilePath);
- FileStream fileStm = new FileStream(strFilePath, FileMode.Create);
- Stream stream = fileStm;
- m_streams.Add(stream);
- return stream;
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- //导出Image
- private void Export()
- {
- try
- {
- string deviceInfo = SetsPage();
- Microsoft.Reporting.WebForms.Warning[] warnings;
- m_streams = new List<Stream>();
- this.ReportViewer1.LocalReport.Render("Image", deviceInfo, CreateStream, out warnings);
- foreach (Stream stream in m_streams)
- stream.Position = 0;
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- //打印页数设置
- private void PrintPage(object sender, PrintPageEventArgs ev)
- {
- try
- {
- Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
- ev.Graphics.DrawImage(pageImage, ev.PageBounds);
- m_currentPageIndex++;
- ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- //打印设置
- private void Print()
- {
- PrintDocument printDoc = new PrintDocument();
- try
- {
- string printerName = "";
- if (Request[this.ddlPrintSearch.UniqueID].Trim() != "")
- printerName = Request[this.ddlPrintSearch.UniqueID];
- else
- printerName = "Microsoft Office Document Image Writer";
- if (m_streams == null || m_streams.Count == 0)
- return;
- printDoc.PrinterSettings.PrinterName = printerName;
- if (!printDoc.PrinterSettings.IsValid)
- {
- string msg = String.Format("Can't find printer /"{0}/".", printerName);
- Console.WriteLine(msg);
- return;
- }
- GetData(false);//获取导出文件名称方法
- if ((Convert.ToString(reportsinfo.IsLandscape) == null ? "" : Convert.ToString(reportsinfo.IsLandscape)) != "")
- printDoc.DefaultPageSettings.Landscape = reportsinfo.IsLandscape;
- printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
- printDoc.Print();
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- finally
- {
- printDoc.Dispose();
- }
- }
- //设置页面的尺寸
- private string SetsPage()
- {
- string deviceInfo = "";
- GetData(false);//获取导出文件名称方法
- //判断,如果是横向打印则设置页面宽度大于高度,反之高度大于宽度
- if (reportsinfo.IsLandscape)
- deviceInfo =
- "<DeviceInfo>" +
- " <OutputFormat>EMF</OutputFormat>" +
- " <InteractiveWidth>297mm</InteractiveWidth>" +
- " <InteractiveHeight>0mm</InteractiveHeight>" +
- " <MarginTop>0.25in</MarginTop>" +
- " <MarginLeft>0.25in</MarginLeft>" +
- " <MarginRight>0.25in</MarginRight>" +
- " <MarginBottom>0.25in</MarginBottom>" +
- "</DeviceInfo>";
- else
- deviceInfo =
- "<DeviceInfo>" +
- " <OutputFormat>EMF</OutputFormat>" +
- " <InteractiveWidth>210mm</InteractiveWidth>" +
- " <InteractiveHeight>0mm</InteractiveHeight>" +
- " <MarginTop>0.25in</MarginTop>" +
- " <MarginLeft>0.25in</MarginLeft>" +
- " <MarginRight>0.25in</MarginRight>" +
- " <MarginBottom>0.25in</MarginBottom>" +
- "</DeviceInfo>";
- //<InteractiveHeight>0cm</InteractiveHeight>
- //" <PageWidth>297mm</PageWidth>" +
- //" <PageHeight>210mm</PageHeight>" +
- //" <PageWidth>210mm</PageWidth>" +
- // " <PageHeight>297mm</PageHeight>" +
- return deviceInfo;
- }
- //注释流列表
- public void MyStreamDispose()
- {
- if (m_streams != null)
- {
- foreach (Stream stream in m_streams)
- stream.Close();
- m_streams = null;
- }
- }
- //页面大小显示事件
- protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
- {
- ShowReport();
- PageShowSize();
- }
- //检查该文件是否已经存在,如果存在则删除
- private void DeleteFile(string pathStr)
- {
- FileInfo file = new FileInfo(pathStr);
- try
- {
- if (file.Exists)
- file.Delete();
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- finally
- {
- if (file != null)
- file = null;
- }
- }
- private void AddDataSource()
- {
- try
- {
- string type = Request.QueryString["type"].Trim() == null ? "" : Request.QueryString["type"].Trim();
- if (type.Trim() != "" && Util.IsNumber(type.Trim().ToString()))
- {
- int tp = Convert.ToInt32(type.Trim().ToString());
- //adapters 此adapters为后台查询结果,结果应该与数据集字段相同,才能进行填充
- Dictionary<string, SqlDataAdapter> adapters = BizReportsInfo.GetInstance().GetAdapter(tp, Request.QueryString["ItemId"]); ;
- switch (tp)
- {
- case 1:
- {
- ReportInbound.StockOrderDataTable dt = new ReportInbound.StockOrderDataTable();
- ReportInbound.StockOrderDetailDataTable dtt = new ReportInbound.StockOrderDetailDataTable();
- adapters["DetailAdapter"].Fill(dtt);
- adapters["MainAdapter"].Fill(dt);
- ReportDataSource rds = new ReportDataSource("ReportInbound_StockOrder", dt);
- ReportDataSource rdsd = new ReportDataSource("ReportInbound_StockOrderDetail", dtt);
- ReportViewer1.LocalReport.DataSources.Clear();
- ReportViewer1.LocalReport.DataSources.Add(rds);
- ReportViewer1.LocalReport.DataSources.Add(rdsd);
- }
- break;
- case 2:
- {
- ReportOutbound.ShipmentOrderDataTable dt = new ReportOutbound.ShipmentOrderDataTable();
- //此处为强类型数据集 ReportOutbound.ShipmentOrderDetailDataTable dtt = new ReportOutbound.ShipmentOrderDetailDataTable();
- adapters["DetailAdapter"].Fill(dtt);
- adapters["MainAdapter"].Fill(dt);
- ReportDataSource rds = new ReportDataSource("ReportOutbound_ShipmentOrder", dt);
- ReportDataSource rdsd = new ReportDataSource("ReportOutbound_ShipmentOrderDetail", dtt);
- ReportViewer1.LocalReport.DataSources.Clear();
- ReportViewer1.LocalReport.DataSources.Add(rds);
- ReportViewer1.LocalReport.DataSources.Add(rdsd);
- }
- break;
- default: ShowErroMessage("传入的单据类型没有对应的信息,请检查!");
- break;
- }
- }
- else
- {
- ShowErroMessage("传入的单据类型格式错误,请检查!");
- }
- }
- catch (Exception ex)
- {
- throw new Exception(ex.Message);
- }
- }
- protected void lBtnRefresh_Click(object sender, EventArgs e)
- {
- this.ReportViewer1.LocalReport.Refresh();
- }
- //第一页
- protected void lBtnFirst_Click(object sender, EventArgs e)
- {
- this.ReportViewer1.CurrentPage = 1;
- PageChange();
- }
- //下一页
- protected void lbtnNext_Click(object sender, EventArgs e)
- {
- if (this.ReportViewer1.CurrentPage != this.ReportViewer1.LocalReport.GetTotalPages())
- this.ReportViewer1.CurrentPage++;
- PageChange();
- }
- //上一页
- protected void lBtnPrevious_Click(object sender, EventArgs e)
- {
- if (this.ReportViewer1.CurrentPage != 1)
- this.ReportViewer1.CurrentPage--;
- PageChange();
- }
- //最后一页
- protected void lBtnLast_Click(object sender, EventArgs e)
- {
- this.ReportViewer1.CurrentPage = this.ReportViewer1.LocalReport.GetTotalPages();
- PageChange();
- }
- protected void btnReturn_Click(object sender, EventArgs e)
- {
- this.ReportViewer1.LocalReport.Dispose();
- this.ReportViewer1.Dispose();
- Response.Redirect("../Body.aspx");
- }
- }
5. 更换reportviewcontrol版本,此时的报表控件还不具备打印功能,从官网下载版本为9.0的ReportViewerControl 和sp1补丁,安装好答应按钮就出来了。
6。调用打印页
- protected void lbtnExport_Click(object sender, EventArgs e)
- {
- if (!base.CheckAccess((int)AppEnum.Privilege.TransPortOrderPrint))
- {
- Response.Redirect("~/Error.aspx");
- }
- string shipmentorderid = Request.QueryString["TransportOrderID"].Trim();
- int type = 15;
- string ptwo = "";
- string pthree = "";
- string pfour = "";
- string pfive = "";
- Response.Redirect("../ReportsPrint/ReportView.aspx?type=" + type + "&ItemId=" + shipmentorderid.Trim() + "¶mtwo=" + ptwo.Trim() + "¶mthree=" + pthree.Trim() + "¶mfour=" + pfour.Trim() + "¶mfive=" + pfive.Trim());
- }
由于一个功能可能好多种打印方式比如打印里和打印所有的,所以在设计报表的时候应该灵活运用参数已达到最佳效果。