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

Windows Forms Discussion :

[C# 2.0] Impression d'un datagridview


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de OtI$
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 64
    Par défaut [C# 2.0] Impression d'un datagridview
    Salut!!

    J'ai un datagridview qui fait 76 colonnes et 60 lignes. Lorsque je veux l'imprimer, je clique sur un bouton, et j'affiche un aperçu avant impression du document contenant le datagridview.

    Seulement, de base, il cherche à imprimer le datagridview sur 1 seule page, et mon doc est illisible du coup (je travaille en portrait).

    J'ai cherché un peu partout (notamment la MSDN) et j'ai surchargé l'évènement PrintDoc_PrintPage() pour essayer d'imprimer sur plusieurs pages. j'arrive à déterminer combien je peux avoir de colonnes au max / page et combien de lignes / page, ainsi que le nombre total de pages dont je vais avoir besoin.

    Néanmoins, malgré tout mes tests, l'aperçu affiche toujours une seule page avec le datagridview illisible et pareil pour l'impression.

    voici mon ev:
    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
     
    private void m_printDoc_PrintPage(object sender, PrintPageEventArgs ev)
            {
                PageCurrent++;
     
                //ToDo: Ajouter les colonnes header
                int RowBorneMax = (RowCurrent + NbRowPerPage);
                int i = ColCurrent;
                int ColBorneMax = (ColCurrent + NbColPerPage);
                for (; RowCurrent < RowBorneMax; RowCurrent++)
                {
                    string sb_items = "";
                    for (; i < ColBorneMax; i++)
                    {
                        if(RowCurrent < this.Items.Count && ColCurrent < this.Columns.Count) 
                            sb_items += "| " + this.Items[RowCurrent].SubItems[ColCurrent].Text + "| ";
                    }
                    float yPos = ev.MarginBounds.Top + (RowCurrent *
                       printFont.GetHeight(ev.Graphics));
                    ev.Graphics.DrawString(sb_items, printFont, Brushes.Black, ev.MarginBounds.Left, yPos);
                }
                ColCurrent = i;
                if (RowCurrent < this.Items.Count 
                    || ColCurrent < this.Columns.Count
                    || PageCurrent < NbTotalPages )
                {
                    ev.HasMorePages = true;
                }
                else
                {
                    ev.HasMorePages = false;
                }  
            }
    Quelqu'un a t il une idée ?
    Merci à tous !!

    Oti$

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Par défaut
    alors pour l'impression, c'est peut être beaucoup plus lourd mais dans le projet sur lequel je bosse, on utilise un document xslt pour mettre en forme et on affiche ça dans un doc XLS

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    Bonjour à toi,

    Je ne sais pas si cela n'est pas trop tard mais si tu n'affiches qu'une page et vu ton code qui à l'air d'être correct pour moi, regardes si tu initialise correctement ton printDocument.

    Par exemple de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                this.printDocument1 = new PrintDocument();
                this.printDocument1.PrintPage += new PrintPageEventHandler(printDocumentReport_PrintPage);
                this.printDocument1.BeginPrint += new PrintEventHandler(printDocumentReport_BeginPrint);
     
                this.printPreview.Document = this.printDocument1;
                this.printPreview.Name = "print";
                this.printPreview.ShowDialog();
    En gros ce code est dans une de mes fonctions, elle initialise mon document, les évènements associés, et affiche un printPreview. De cette manière tu devrais avoir du multi-page (j'avais eu le même soucis que toi à un moment).

    En espérant t'avoir quelque peu aidé

Discussions similaires

  1. Impression du contenu d'un datagridview
    Par Soprath dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/08/2010, 11h00
  2. Impression dataGridView avec PrintDocument
    Par Le gris dans le forum C#
    Réponses: 6
    Dernier message: 16/04/2010, 10h08
  3. Impression d'une datagridview via PrintDocument
    Par abou_alkassim dans le forum VB.NET
    Réponses: 3
    Dernier message: 07/01/2010, 00h45
  4. Windows Form: impression d'un datagridview
    Par bensra dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/12/2007, 10h41

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