如何隐藏水晶报表文件格式对话框中的选项

时间:2015-09-21 08:01:13

标签: c# asp.net vb.net crystal-reports

我在visual studio 2012 asp.net c#中使用水晶报告。我想隐藏水晶报告对话中的一些选项,因为它无法正常工作。选项如下

1- Microsoft Word (97-2003)Data Only
2-Microsoft  Excel (97-2003)Data Only
3-XML 

...等 我怎样才能从水晶报告中隐藏这些选项。

1 个答案:

答案 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);
    }
}