我在visual studio 2012 asp.net c#中使用水晶报告。我想隐藏水晶报告对话中的一些选项,因为它无法正常工作。选项如下
1- Microsoft Word (97-2003)Data Only
2-Microsoft Excel (97-2003)Data Only
3-XML
...等 我怎样才能从水晶报告中隐藏这些选项。
答案 0 :(得分:1)
我们需要为ReportViewer控件分配一个OnLoad事件处理程序,如下所示。
<rsweb:ReportViewer ID="ReportViewer1"
runat="server"
Width="600"
OnLoad="ReportViewer_OnLoad">
</rsweb:ReportViewer>
然后在事件处理程序中,我们将编写代码以隐藏导出按钮DropDown中的Export选项。
ReportViewer控件中的所有导出选项都可通过ListRenderingExtentionsList方法获得。从这个列表中我们需要找到我们希望隐藏的Export选项的扩展名,因此我通过匹配Lambda表达式查询中的扩展名来完成此操作。
找到扩展程序后,我们需要使用Reflection访问其m_isVisible
属性并将其设置为false。
protected void ReportViewer_OnLoad(object sender, EventArgs e)
{
string exportOption = "Excel";
//string exportOption = "Word";
//string exportOption = "XML";
RenderingExtension extension = ReportViewer1.LocalReport.ListRenderingExtensions().ToList().Find(x => x.Name.Equals(exportOption,StringComparison.CurrentCultureIgnoreCase));
if (extension != null)
{
System.Reflection.FieldInfo fieldInfo = extension.GetType().GetField("m_isVisible", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
fieldInfo.SetValue(extension, false);
}
}