gpt4 book ai didi

Winforms ReportViewer 和导出后打开

转载 作者:行者123 更新时间:2023-12-04 02:20:36 25 4
gpt4 key购买 nike

当使用 ReportViewer 中的默认导出按钮时,有没有一种方法可以简单地提示用户打开导出的报表?我查看了 ReportExport 事件,尽管它在导出发生之前触发。我唯一能想到的就是取消 ReportExport 并创建我自己的导出功能,尽管我希望我不需要这样做。导出发生后,是否有任何我遗漏的事件?

最佳答案

我找到了一个解决方案。 @KreepN,我在各种讨论板上看到过与您的在线解决方案类似的解决方案,但是,我找到了另一个更适合我所寻找的解决方案。这提供了所有默认的导出功能。这是我所做的:

首先,在创建表单时订阅 ReportExport 事件。

this.reportViewer1.ReportExport += new ExportEventHandler(this.ReportViewer1_ReportExport);

这是我的 ReportExport 事件处理方法:

private void ReportViewer1_ReportExport(object sender, ReportExportEventArgs e)
{
e.Cancel = true;

string extension = this.GetRenderingExtension(e.Extension);

SaveFileDialog saveFileDialog = new SaveFileDialog()
{
Title = "Save As",
CheckPathExists = true,
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
Filter = e.Extension.LocalizedName + " (*" + extension + ")|*" + extension + "|All files(*.*)|*.*",
FilterIndex = 0
};

if (saveFileDialog.ShowDialog(this) == DialogResult.OK)
{
this.reportViewer1.ExportDialog(e.Extension, e.DeviceInfo, saveFileDialog.FileName);

// Here's where I call my method to prompt user to open the file.
RadExportHelper.OpenFileWithPrompt(saveFileDialog.FileName);
}
}

RenderingExtension 类不公开导出的实际文件扩展名,因此我创建了这个方法:

private string GetRenderingExtension(RenderingExtension extension)
{
switch (extension.Name)
{
case "PDF":
return ".pdf";
case "CSV":
return ".csv";
case "EXCEL":
return ".xls";
case "MHTML":
return ".mhtml";
case "IMAGE":
return ".tif";
case "XML":
return ".xml";
case "WORD":
return ".doc";
case "HTML4.0":
return ".html";
case "NULL":
throw new NotImplementedException("Extension not implemented.");
}

throw new NotImplementedException("Extension not implemented.");
}

最后,这是我的辅助方法,用于提示用户并在他们选择时打开文件:

public static void OpenFileWithPrompt(string file)
{
if (RadMessageBox.Show(
Resources.RadHelper_OpenExportedDataMessage,
Resources.RadHelper_OpenExportedDataTitle,
MessageBoxButtons.YesNo,
RadMessageIcon.Question,
MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
Process.Start(file);
}
}

关于Winforms ReportViewer 和导出后打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com