首页 文章

在我的C#中打印没有显示打印选项对话框Crystal Report Viewer

提问于
浏览
0

我有一个C#应用程序,它在表单中有一个Crystal Report Viewer . 我调用该表单并向其传递一个值,用于更新与Crystal Report关联的参数字段,以便仅显示特定记录 .

一切正常,我可以调用Viewers PrintReport方法打印报告,无需操作员干预 .

CrystalForm fs = new CrystalForm(); 
fs.SetCrystalOrderNumParameter(ItemID);

 public partial class CrystalForm : Form
    {
        public CrystalForm()
        {
            InitializeComponent();
        }

        public void SetCrystalOrderNumParameter(string ItemID)
        {
            ParameterFields paramFields = new ParameterFields();

            ParameterField paramField = new ParameterField();
            ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();

            paramField.Name = "ItemID";
            paramDiscreteValue.Value = ItemID;
            paramField.CurrentValues.Add(paramDiscreteValue);
            paramFields.Add(paramField);


            crystalReportViewer1.ParameterFieldInfo = paramFields;

            crystalReportViewer1.PrintReport();

        }
    }

我遇到的问题是我希望能够将值传递给Crystal Report,以便它使用此#来确定应该打印多少份报告 .

有没有办法使用Crystal Report Viewer执行此操作?

提前感谢您的协助 .

2 回答

  • 0

    水晶报表查看器本身不提供此功能 .

    要在没有对话框弹出窗口的情况下控制页面数,您必须使用 CrystalDecisions.CrystalReports.Engine.ReportDocument 类 . 此类是CrystalReports API用于表示实际Crystal Report的类,通常将其分配给查看器的 ReportSource 属性,以告知查看器要显示的报告 . 您可能已经在使用此对象,但我无法从您共享的代码中看到您分配报告源的位置 .

    ReportDocument 类有 PrintToPrinter 方法,第二个重载如下所示: void PrintToPrinter(int nCopies, bool collated, int startPageN, int endPageN)

    nCopies 参数允许您指定要打印的报告的副本数 . 报告的打印设置将默认为报告的打印机设置,但可以通过 ReportDocument 实例的 PrintOptions 属性进行更改 .

    这是一个简单的代码示例,其中rptPath是Crystal报表的路径:

    var rpt = new ReportDocument();
    rpt.Load(rptPath);
    rpt.PrintOptions.PrinterName = "MyPrinterName";
    //This will print 2 copies of the crystal report.
    //You can use the nCopies (first) parameter to specify whatever #
    //of copies you wish.
    rpt.PrintToPrinter(2, false, 0, 0);
    

    此外,当ReportDocument用于通过Load()方法加载Crystal Report时,它会自动使用报表所需的所有参数填充其ParameterFields集合 . 然后,您可以设置参数的值,如显示的红色:

    rpt.SetParameterValue("ParameterName", value);
    

    最后,如果要向查看者显示此报告,您只需执行以下操作:

    viewer.ReportSource = rpt;
    

    其中 rpt 是表示报告的 ReportDocument 对象,而查看者是您希望用于显示报告的 CrystalDecisions.Windows.Forms.CrystalReportViewer .

  • 1

    通过将代码后面的变量传递给cr report参数:

    可能是这样的:

    CRPT.SetParameterValue("syear", Servercls.year);
    CRPT.SetParameterValue("smonth", Servercls.month);
    CRPT.SetParameterValue("sday", Servercls.day);
    

    有关详细信息,请参阅link

相关问题