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

VB.NET Discussion :

Datagridview colonne contenant le numéro de chaque ligne


Sujet :

VB.NET

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut Datagridview colonne contenant le numéro de chaque ligne
    Bonjour,
    j'ai crée un datagridview qui contient les données issus d'une base de donnée mysql, pas de soucis tout ca fonctionne, et je voudrais crée une colonne supplémentaire pour afficher un numéro sur chaque ligne, par ordre croissant, non issu de la base de donnnée, pour ceci j'ai réussi à crée la colonne 'colonne_ci' mais comment faire pour incrémenter un compteur qui affichera le numéro de chaque ligne?

    j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       Dim colonne_ci As New DataGridViewTextBoxColumn
                With colonne_ci
                    Dim i As Integer
                    i = i + 1
                    archives.DataGridView1.Rows(i).HeaderCell.Value = i.ToString
                End With
                archives.DataGridView1.Columns.Insert(2, colonne_ci)
     
                archives.DataGridView1.Columns(1).Width = 50 'BOUTON
                archives.DataGridView1.Columns(2).Width = 50 'NUMERO CI
                archives.DataGridView1.Columns("numero").Width = 90
                archives.DataGridView1.Columns("date").Width = 80
                archives.DataGridView1.Columns("heure").Width = 90

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Pourquoi ne pas numéroter directement les lignes depuis la base de données ? Comme je ne connais pas ta requête, voici un exemple tout simple pour MySQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT @i := @i + 1 RowNumber, t.TonChamp1, t.TonChamp2
    FROM (SELECT @i := 0) initvars, taTable t

    Sinon, regarde du côté de l'évènement DataGridView.RowPostPaint :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Protected Overrides Sub OnRowPostPaint(e As DataGridViewRowPostPaintEventArgs)
    	Dim strRowNumber As String = (e.RowIndex + 1).ToString()
    	While strRowNumber.Length < Me.RowCount.ToString().Length
    		strRowNumber = Convert.ToString("0") & strRowNumber
    	End While
    	Dim size As SizeF = e.Graphics.MeasureString(strRowNumber, Me.Font)
    	If Me.RowHeadersWidth < CInt(size.Width + 20) Then
    		Me.RowHeadersWidth = CInt(size.Width + 20)
    	End If
    	Dim b As Brush = SystemBrushes.ControlText
    	e.Graphics.DrawString(strRowNumber, Me.Font, b, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + ((e.RowBounds.Height - size.Height) / 2))
    	MyBase.OnRowPostPaint(e)
    End Sub
    Source: How to add row numbers to DataGridView

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut
    malheureusement je ne peux pas les numéroter en bdd, car si il y a un ajout en base de donnée, je devrais mettre a jour tout les enregistrement car il y a un classement décroissant par date.
    n'y aurait il pas une méthode plus simple que DataGridView.RowPostPaint ?
    j'ai trouvé ceci mais il me retourne le nombre de ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    .HeaderText = archives.DataGridView1.RowCount.ToString
                    .Name = archives.DataGridView1.RowCount.ToString
                    .Text = archives.DataGridView1.RowCount.ToString
                    .UseColumnTextForButtonValue = True

  4. #4
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Je pense qu'utiliser RowPostPaint reste la meilleure solution pour gérer les numéros tant en lecture qu'en écriture de nouvelles lignes de ton DGV. (Sinon j'ai vu un morceau de code qui le faisait sur l'event BindingComplete, mais je sais pas comment il réagirait si l'user rajoutait une nouvelle ligne dans le DGV ... Est-ce qu'il aurait son numéro incrémenté ?)

  5. #5
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      MyGridView.RowHeadersWidth                  = 50 ;
      MyGridView.RowHeadersDefaultCellStyle.Font  = new Font(MyGridView.RowHeadersDefaultCellStyle.Font.FontFamily,6.0f) ;
      MyGridView.RowPrePaint                     += MyGridView_RowPrePaint ;
     
      private void MyGridView_RowPrePaint(object sender,DataMyGridViewRowPrePaintEventArgs e)
      {
        if (e.RowIndex >= 0 && MyGridView.Rows[e.RowIndex].HeaderCell.Value==null) 
          MyGridView.Rows[e.RowIndex].HeaderCell.Value = e.RowIndex.ToString() ;
      }

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Citation Envoyé par gastoncs Voir le message
    malheureusement je ne peux pas les numéroter en bdd, car si il y a un ajout en base de donnée, je devrais mettre a jour tout les enregistrement car il y a un classement décroissant par date.
    Tu devrais relire la réponse de DotNetMatt car ta réponse montre que tu ne l'as pas comprise.

    Ce qu'il propose est, je pense, de loin la méthode la plus simple et la plus performante (quoi qu'avec mysql, rien n'est moins sûr ^^).

Discussions similaires

  1. Talend Base de données contenant du XML dans chaque ligne
    Par glorktar dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 12/11/2014, 18h32
  2. [CR XI] Comment incrémenter un numéro sur chaque ligne de détail ?
    Par juju05 dans le forum Formules
    Réponses: 2
    Dernier message: 30/04/2013, 18h42
  3. Dernière colonne de chaque ligne
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/05/2007, 11h33
  4. Modifer un fichier en ajoutant le numéro de chaque ligne
    Par bellout dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 15/06/2006, 13h43
  5. Réponses: 7
    Dernier message: 06/06/2006, 16h40

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