【转】asp.net不用CrystalReportViewer 直接打印

给页面放一个DropdownList,在PageLoad事件里添加以下代码:
 For Each iprt As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters
            DropDownList1.Items.Add(iprt)
   Next

放一个Button,点击事件为:
Dim reportDoc As ReportDocument = New ReportDocument()

       reportDoc.Load(Server.MapPath("CrystalReport1.rpt"))
        reportDoc.PrintOptions.PrinterName = DropDownList1.SelectedItem.Text
        reportDoc.PrintToPrinter(1, False, 0, 0)

在VS2005上测试通过。

今天发现一个好的办法,给画面拖一个CrystalReportSource空间CrystalReportSource1,拖一个sqldatasource,在sqldatasource中进行数据筛选,然后将它与CrystalReportSource绑定,执行下边几句进行打印

CrystalReportSource1.DataBind(); '取出筛选的数据

CrystalReportSource1.ReportDocument.PrinterName = DropDownList1.SelectedItem.Text

CrystalReportSource1.ReportDocument.PrintToPrinter(1, False, 0, 0)



aspx 代码:

<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true"
            PrintMode="ActiveX" Width="600px" Height="400px" />
        <asp:DropDownList ID="DropDownList1" runat="server">
        </asp:DropDownList>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        <CR:CrystalReportSource ID="CrystalReportSource1" runat="server">
        </CR:CrystalReportSource>

.cs代码:

string sql;
    protected void Page_Load(object sender, EventArgs e)
    {
        this.DropDownList1.Items.Clear();
        foreach (string iprt in System.Drawing.Printing.PrinterSettings.InstalledPrinters)   //只能列出本地打印机
            this.DropDownList1.Items.Add(iprt);
         this.DropDownList1.Items.Add(new ListItem("\\\\chen\\HP Deskjet F300 series", "0"));

        //设置数据源
        sql = "select [money],payMent,addTime from tableOpen where year(addTime) = 2007 and month(addTime) = 07 and day(addTime) = 14";
        //sql = "select [money],payMent,addTime from tableOpen";

        DataSet ds = HensomeWeb.DB.DbHelperSQL.Query(sql);

        this.CrystalReportSource1.ReportDocument.Load(Server.MapPath("CrystalReport8.rpt"));
        CrystalReportSource1.ReportDocument.SetDataSource(ds.Tables["ds"]);
        CrystalReportSource1.DataBind();
      

       //绑定到 CrystalReportViewer
        this.CrystalReportViewer1.ReportSource = CrystalReportSource1;
        this.CrystalReportViewer1.DataBind();

    }


   //button事件,选择打印机并打印报表
    protected void Button1_Click(object sender, EventArgs e)
    {
        CrystalReportSource1.ReportDocument.PrintOptions.PrinterName = DropDownList1.SelectedItem.Text;
        CrystalReportSource1.ReportDocument.PrintToPrinter(1, false, 1, 1);

你可能感兴趣的:(【转】asp.net不用CrystalReportViewer 直接打印)