mardi 17 février 2009

[ReportViewer] Suppression d'un format d'Export

Suite de l'article précédent : Ajouter un LinkButton dans la Toolbar du ReportViewer.

Dans certain cas, nous pouvons avoir besoin de plus d'un type d'exportation du rapport, de ce fait, il faut utiliser le groupe d'export de la toolbar du ReportViewer.

Si l'on veut enlever un seul de ces types de la liste, par exemple "Excel", voilà la méthode que l'on peut employer.

Je me suis basé sur cet article : Enable HTML in ReportViewer LocalReport

[sourcecode language='c-sharp']

public static void DisableUnwantedExportFormats(ReportViewer viewer)
        {
            const BindingFlags Flags = BindingFlags.NonPublic |
                                       BindingFlags.Public |
                                       BindingFlags.Instance;

            FieldInfo previewService =
             viewer.LocalReport.GetType().GetField("m_previewService", Flags);

            MethodInfo ListRenderingExtensions =
              previewService.FieldType.GetMethod("ListRenderingExtensions", Flags);

            object previewServiceInstance = previewService.GetValue(viewer.LocalReport);

            IList extensions = ListRenderingExtensions.Invoke(previewServiceInstance, null) as IList;

            PropertyInfo name = extensions[0].GetType().GetProperty("Name", Flags);

            foreach (object extension in extensions)
            {
                if (string.Compare(name.GetValue(extension, null).ToString(), "Excel", true) == 0)
                {
                    FieldInfo m_isVisible = extension.GetType().GetField("m_isVisible", BindingFlags.NonPublic | BindingFlags.Instance);
                    FieldInfo m_isExposedExternally = extension.GetType().GetField("m_isExposedExternally", BindingFlags.NonPublic | BindingFlags.Instance);
                    m_isVisible.SetValue(extension, false);
                    m_isExposedExternally.SetValue(extension, false);
                    break;
                }
            }

        } 

[/sourcecode]

Aucun commentaire:

Enregistrer un commentaire