【问题标题】:Set programatically the title to the viewer form in XtraReport以编程方式将标题设置为 XtraReport 中的查看器表单
【发布时间】:2009-09-09 19:11:31
【问题描述】:

有人知道在显示 XtraReport 文档时如何为表单查看器设置标题吗? 场景如下:

我配置了一个 XtraReport 报告,我调用 ShowPreviewDialog 方法显示它,一个查看器表单打开并显示文档。我需要为此查看器表单设置标题,但找不到完成此操作的属性或方法。

提前致谢。

【问题讨论】:

    标签: c# devexpress xtrareport


    【解决方案1】:

    编辑: 显然,如果您不调用 CreateDocument,它有时会起作用,有时则不会。所以请确保它在那里(在我的第一篇文章中丢失了)。

    我相信凯尔的回答是不正确的。看来您可以访问该表单,只是不直观。正如 Pierre 指出的那样,创建自己的表单是有正当理由的,但如果您使用默认表单并只想自定义标题,请尝试:

    using(var rpt = new XtraReport1())
    {
       rpt.PrintingSystem.PrintPreviewFormEx.Text = "My Custom Caption";
       rpt.CreateDocument();
       rpt.ShowPreviewDialog();
    }
    

    【讨论】:

    • 非常有趣的安德鲁。你是对的,有些事情并不那么直观。为你 +1,谢谢。
    • 我想知道在de报告中是否有某种方法可以做到这一点。我有兴趣拥有一个带有属性 ReportTitle 的基本报告,并在打开派生报告时分配道具并让报告设置标题。如果有某种方法可以访问托管表单或可以让我访问的东西...
    【解决方案2】:

    在我们的项目中,我们总是最终创建一个ReportViewer 表单,其目的是显示XtraReport(或PrintingSystem)。

    查看器由一个普通的 XtraForm 组成,我们在其上放置了一个 PrintRibbonController。这将自动创建功能区栏和打印控件。

    然后我们使用一种方法将报表绑定到查看器:

    public partial class ReportViewer : DevExpress.XtraEditors.XtraForm
    {
        public ReportViewer()
        {
            InitializeComponent();
        }
    
        // Used when displaying a single report
        public void SetReport(XtraReport report)
        {
            this.printControl.PrintingSystem = report.PrintingSystem;
            report.CreateDocument();
            this.printControl.UpdatePageView();
        }
    
        // Used when displaying merged reports
        public void SetReport(PrintingSystem system)
        {
            this.printControl.PrintingSystem = system;
            this.printControl.UpdatePageView();
        }
    }
    

    所以显示报告是这样的:

    ReportViewer viewer = new ReportViewer();
    viewer.SetReport(new EmployeeReport());
    viewer.Show();
    

    这种创建自己的查看器的方法可以帮助您:

    • 按用户管理安全性(例如:普通用户无法更改水印),
    • 通过删除或添加按钮来更改功能区以满足您的要求。

    【讨论】:

    • 这对皮埃尔很有用,谢谢!你能看看我对凯尔的回答吗?
    【解决方案3】:

    我不相信 XtraReport 对象使用的预览表单以您可以简单地设置标题的方式公开。但是,可以create your own preview form。这将使您最终控制预览的显示方式。不幸的是,使用这种方法需要您以不同的方式调用预览。您将不再调用 myReport.ShowPreviewDialog()。在示例中,报表是在表单的加载事件中创建的预览表单的私有成员。但我会在加载之前将对现有报表对象的引用传递到表单中,以便您可以重复使用一个打印预览表单。

    【讨论】:

    • 谢谢凯尔!不过我有一个问题...我注意到您(或您发送的教程)使用 PrintBarManager 和 PrintControl,而 Pierre 建议使用 PrintRibbon 控件,这两种方法的优点/缺点是什么?跨度>
    • 我不知道有什么特别的优点或缺点。这只是一个偏好问题。将我链接到的教程中的 PrintControl 与 PrintRibbonControl 的屏幕截图进行比较:imgur.com/N7WeL.png
    • 嗨,Kyle,我想我发现了不同之处……如果您想使用 Ribbon Control,您需要购买 XtraBars 套件。显然,如果我只是购买 XtraReports 许可证,则功能区不包括在内。
    【解决方案4】:

    我认为有一篇关于 devexpress 支持的文章可能会对您有所帮助 - Unable to change report preview window titlebar caption

    要点:

    XtraReport1 rep = new XtraReport1();
                rep.CreateDocument();
                PrintPreviewFormEx form = new PrintPreviewFormEx();
                form.Text = "test";
                form.PrintingSystem = rep.PrintingSystem;
                form.Show(); 
    

    【讨论】:

      【解决方案5】:

      您可以使用ReportPrintTool 类来解决您的问题:

      var report = new MyXtraReport();
      ReportPrintTool reportPrintTool = new ReportPrintTool(report);
      reportPrintTool.PreviewForm.Text = "Some Text"
      report.ShowPreviewDialog();    
      

      【讨论】:

        【解决方案6】:

        我发现 Pierre 的回答非常有帮助 - 拥有自己的自定义报告查看器确实可以帮助您管理访问等。我已添加此代码:

         PrintingSystemCommand[] commands = {PrintingSystemCommand.DocumentMap,
                                                           PrintingSystemCommand.Open,
                                                           PrintingSystemCommand.Save};
        
         this.printControl1.PrintingSystem.SetCommandVisibility(commands, CommandVisibility.None);
        

        当然你必须有参考资料:

        using DevExpress.XtraEditors;
        using DevExpress.XtraReports.UI;
        using DevExpress.XtraPrinting;
        

        再次感谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-18
          • 1970-01-01
          • 2020-05-31
          • 2015-10-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-10
          相关资源
          最近更新 更多