IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez .NET Discussion :

Crystal Report - Changer dynamiquement le type de rapport [Sources]


Sujet :

Contribuez .NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut Crystal Report - Changer dynamiquement le type de rapport
    Bonjour,

    J'ai mis au point un UserControl qui permet de changer dynamiquement le type de rapport (en plus de la source de données).

    Le code est présenté ci-dessous.

    Merci pour vos commentaires !

    Voici le code client pour charger un rapport du type MY_CR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Load Crystal Report
    crViewerInterop1.SetDataSource(typeof(MY_CR), dataTable);
    Et le code du UserControl, qui va recréer complètement le contrôle ReportViewer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    /// <summary>
    /// Loads ans shows the CR Viewer. Thread-safe
    /// </summary>
    /// <param name="crReportType">Type of the Report. Ex : typeof(CR_INVOICE)</param>
    /// <param name="dtSource">DataTable that contains the data</param>
    public void SetDataSource(Type crReportType, DataTable dtSource)
    {
    	if (this.InvokeRequired)
    		this.Invoke(new SetDataSourceDelegate(SetDataSource), new object[] { crReportType, dtSource });
    	else
    	{
    		ReportClass crReport = ReloadCrPreview(crReportType);
    		try
    		{
    			crReport.SetDataSource(dtSource);
    			crPreview.CrViewer.RefreshReport();
    			crReport.Refresh();
    		}
    		catch
    		{
    			/* A msgbox "Load Report Failed" id shown */
    		}
    	}
    }
     
    /// <summary>
    /// Recharger le composant CR pour effacer le cache.
    /// Sinon les pages visualisées restent dans le cache et ne seront pas mises à jour dans l'aperçu
    /// </summary>
    private ReportClass ReloadCrPreview(Type crReportType)
    {
    	// Ne pas cacher le panel parent pendant le redessinage -> "Load Report Failed" !
    	crPreview.CrViewer.ReportSource = null;
    	crPreview.Dispose();
     
    	// Create ReportClass
    	crReport = (ReportClass)Activator.CreateInstance(crReportType);
    	crPreview = new CrViewerControl();
    	crPreview.CrViewer.ReportSource = crReport;
    	// 
    	// crPreview (from Designer.cs)
    	// 
    	crPreview.Dock = System.Windows.Forms.DockStyle.Fill;
    	crPreview.Name = "crPreview";
     
    	// Add new control
    	panelCrViewer.Controls.Add(this.crPreview);
     
    	Application.DoEvents(); // NE PAS RETIRER -> "Load Report Failed" !
     
    	return crReport;
    }
    Enfin, l'objet ReportClass (le rapport) est accessible via la propriété CrViewerInterop.CrReport.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Export PDF
    crViewerInterop1.CrReport.ExportToDisk(
         CrystalDecisions.Shared.ExportFormatType.PortableD ocFormat,
         filename);

  2. #2
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut
    Voici le code source complet !
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/10/2018, 15h30
  2. [Crystal Report] Image dynamique
    Par Drahas dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 01/03/2010, 09h50
  3. changer dynamiquement le type d'un input
    Par Cram_N7 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/05/2009, 16h59
  4. Crystal reports - Création dynamique?
    Par Zoilus dans le forum Delphi
    Réponses: 1
    Dernier message: 25/10/2006, 16h05
  5. [Delphi 7+Crystal Reports XI] - Error 515 dans un rapport
    Par david_chardonnet dans le forum SDK
    Réponses: 1
    Dernier message: 03/04/2006, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo