触发报告查看器';s的ToolBar函数
本文关键字:ToolBar 函数 报告 | 更新日期: 2023-09-27 18:25:02
是否可以通过单击按钮(或除reportViewer提供的控件之外的任何其他控件)触发导出到Excel/PDF/Word。我通过PerformClick成功触发了Print和PrintLayout,但它不适用于导出(它是reportViewers ToolBar中的第15个索引,但当我尝试使用export时,什么都没有发生)。这是因为导出是DropDownButton吗?在这种情况下,我将如何访问它的项目(我在工具栏中按名称和索引号列出了每个项目,Export DropDownButton列出了,但它的项目没有)。
感谢
我也有同样的问题。你能发布一些代码吗?这样我就可以看到如何访问工具栏以及"打印"answers"打印预览"按钮了?也许看了之后,我也能弄清楚其他的。
如果您可以从VB.NET 转换,以下帖子的公认解决方案可能会对您有所帮助
以编程方式触发ReportViewer Toolbar控件
要访问工具栏,您需要像您发布的问题中那样的FindToolbar函数。这是该函数的C#版本:
private T FindToolStrip<T>(Control control) where T : System.Windows.Forms.Control
{
if (control == null)
{
return null;
}
else if (control is T)
{
return (T)control;
}
else
{
T result = null;
foreach (Control embedded in control.Controls)
{
if (result == null)
{
result = FindToolStrip<T>(embedded);
}
}
return result;
}
}
之后,你创建了一个按钮控件(或任何其他你想要的),并在其中添加以下代码:
ToolStrip ts = new ToolStrip();
ts = FindToolStrip<ToolStrip>(this.reportViewer1);
ts.Items[13].PerformClick();
项目13是打印预览,您可以通过循环浏览reportViewers ToolStrip并写出项目的名称(总共有21个,但其中一些是分隔符或标签)来获得它上所有按钮的索引。您可以使用此代码来触发其中的任何一个(除了Export,我认为这与Export是一个下拉按钮而不是普通按钮有关)。如果您感兴趣,这是将显示的报告导出到.xls文件的代码:
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
string path = " ";
DialogResult dr= saveFileDialog1.ShowDialog();
path = saveFileDialog1.FileName;
byte[] bytes = reportViewer1.LocalReport.Render("Excel", null, out mimeType, out encoding, out extension, out streamids, out warnings);
FileStream fs = new FileStream(path + ".xls", FileMode.Create);
fs.Write(bytes, 0, bytes.Length);
fs.Close();
同样,您可以将其放入button_Click方法或类似方法中。我还没有尝试过其他扩展(.pdf或.doc),但我认为它应该可以正常工作。您需要将要保存的文件的扩展名添加到路径字符串中,否则将无法打开创建的文件。我希望这能帮助你解决问题。