C# 通过ReportViewer生成报告时禁用Excel导出选项
在winforms应用程序中通过ReportViewer生成报告时,如何禁用Excel导出选项 添加: 特别是,我想隐藏指向Excel输出/导出任务的工具栏按钮,而不是。处理pdf导出选项的工具栏按钮。请尝试以下操作:C# 通过ReportViewer生成报告时禁用Excel导出选项,c#,vb.net,winforms,reporting,reportviewer,C#,Vb.net,Winforms,Reporting,Reportviewer,在winforms应用程序中通过ReportViewer生成报告时,如何禁用Excel导出选项 添加: 特别是,我想隐藏指向Excel输出/导出任务的工具栏按钮,而不是。处理pdf导出选项的工具栏按钮。请尝试以下操作: Dim instance As ReportViewer instance.ShowExportButton = false HTH虽然表面上看这似乎很容易,但出口选项很难掌握。只需执行以下操作,即可获得reportviewer的toolstrip: Dim myToolSt
Dim instance As ReportViewer
instance.ShowExportButton = false
HTH虽然表面上看这似乎很容易,但出口选项很难掌握。只需执行以下操作,即可获得reportviewer的toolstrip:
Dim myToolStrip As ToolStrip = DirectCast(ReportViewer1.Controls.Find("toolStrip1", True)(0), ToolStrip)
…您可以遍历.Items集合来对按钮执行您喜欢的操作,但是导出按钮的DropDownItems集合始终显示为空
因此,简单的解决方案是去掉默认的导出按钮,添加您自己的功能,只需要您需要的功能。因此,在表单构造函数中:
//Hide the default export button
ReportViewer1.ShowExportButton = False
//Define a new button
Dim newExportButton As New ToolStripButton("Export PDF", Nothing, AddressOf Me.ExportPDF, "newExport")
//And add it to the toolstrip
DirectCast(ReportViewer1.Controls.Find("toolStrip1", True)(0), ToolStrip).Items.Add(newExportButton)
然后,您需要做的就是处理实际的导出:
Private Sub ExportPDF()
Dim warnings As Microsoft.Reporting.WinForms.Warning()
Dim streamids As String()
Dim mimeType As String = ""
Dim encoding As String = ""
Dim extension As String = ""
Dim bytes As Byte() = ReportViewer1.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
Dim fs As New IO.FileStream("C:\export.pdf", IO.FileMode.Create)
fs.Write(bytes, 0, bytes.Length)
fs.Close()
fs.Dispose()
End Sub
这将完成海报要求的内容(使用一点LINQ从集合中选择特定类型的对象):
private void DisableReportViewerExportExcel()
{
var toolStrip=this.ReportViewer.Controls.Find(“toolStrip1”,true)[0]作为toolStrip;
如果(toolStrip!=null)
foreach(toolStrip.Items.OfType()中的var dropDownButton)
dropDownButton.DropDownOpened+=新事件处理程序(dropDownButton\u DropDownOpened);
}
void dropDownButton_dropDownOpen(对象发送方,事件参数e)
{
if(发送方为ToolStripDropDownButton)
{
var ddList=发送方作为ToolStripDropDownButton;
foreach(ddList.DropDownItems.OfType()中的变量项)
if(item.Text.Contains(“Excel”))
item.Enabled=false;
}
}
感谢您的回复。但是,此代码将禁用Excel和“pdf”导出。我希望能够只导出pdf文件。我想隐藏引用Excel导出的按钮,而不是使用pdf选项的按钮…是的。此代码将禁用Excel和Pdf导出。但当用户点击打印按钮时,他/她可以从打印窗口选择一个pdf创建者。我不知道它是否有效,我很快会尝试,但你应该被选为我问题的答案。谢谢你的努力,没问题。如果您有问题,请告诉我,因为它在这里对我很好。我发现另一个问题很有用:这个问题是针对windows窗体报表查看器的,而不是win窗体中的webWorks。非常感谢。
//Call This function from Page_Load Event
private void CustomizeRV(System.Web.UI.Control reportControl)
{
foreach (System.Web.UI.Control childControl in reportControl.Controls)
{
if (childControl.GetType() == typeof(System.Web.UI.WebControls.DropDownList))
{
System.Web.UI.WebControls.DropDownList ddList = (System.Web.UI.WebControls.DropDownList)childControl;
ddList.PreRender += new EventHandler(ddList_PreRender);
}
if (childControl.Controls.Count > 0)
{
CustomizeRV(childControl);
}
}
}
//Dropdown prerender event
//You can hide any option from ReportViewer( Excel,PDF,Image )
void ddList_PreRender(object sender, EventArgs e)
{
if (sender.GetType() == typeof(System.Web.UI.WebControls.DropDownList))
{
System.Web.UI.WebControls.DropDownList ddList = (System.Web.UI.WebControls.DropDownList)sender;
System.Web.UI.WebControls.ListItemCollection listItems = ddList.Items;
if ((listItems != null) && (listItems.Count > 0) && (listItems.FindByText("Excel") != null))
{
foreach (System.Web.UI.WebControls.ListItem list in listItems)
{
if (list.Text.Equals("Excel"))
{
list.Enabled = false;
}
}
}
}
}
private void DisableReportViewerExportExcel()
{
var toolStrip = this.ReportViewer.Controls.Find("toolStrip1", true)[0] as ToolStrip;
if (toolStrip != null)
foreach (var dropDownButton in toolStrip.Items.OfType<ToolStripDropDownButton>())
dropDownButton.DropDownOpened += new EventHandler(dropDownButton_DropDownOpened);
}
void dropDownButton_DropDownOpened(object sender, EventArgs e)
{
if (sender is ToolStripDropDownButton)
{
var ddList = sender as ToolStripDropDownButton;
foreach (var item in ddList.DropDownItems.OfType<ToolStripDropDownItem>())
if (item.Text.Contains("Excel"))
item.Enabled = false;
}
}