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

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

提前致谢。

有帮助吗?

解决方案

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

其他提示

编辑:显然,如果您不调用CreateDocument,它有时会显示有效,有时则不然。所以确保它在那里(我在第一篇文章中遗漏了它)。

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

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

在我们的项目中,我们总是最终创建一个 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();

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

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

我认为有一篇关于devexpress支持的文章可能对你有所帮助 - 无法改变报告预览窗口标题栏标题

它的要点:

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

您可以使用 ReportPrintTool 课程来解决问题:

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

我发现Pierre的答案非常有用 - 拥有自己的自定义Report Viewer确实可以帮助您管理访问等。我添加了这段代码:

 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;

再次感谢。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top