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 :

Créer une DataGridView avec des lignes instructions


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut Créer une DataGridView avec des lignes instructions
    Bonjour,

    Pour des questions d'ergonomie, je souhaite créer une datagridview avec 8 colonnes sans la créer de manière graphique car je trouve que c'est assez long a paramètres toutes les colonnes, etc... alors que je suis sensé devoir en créer plein de datagridview, je voudrai savoir comment en créer une avec des lignes d'instruction (pour gagner énormément de temps en faisans ensuite juste des copier coller et changer le nom de ma datagridview) dans le programme de mon Form avec le nombre de colonnes que je souhaite, leurs nom, les couleurs etc...

    Merci d'avance.

    PS: je suis en Visual studio Pro 2010 et j'ai essayer le code suivant mais c'est plein d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'création de la grille
     
    Private WithEvents MyDataGridView As New DataGridView
     
    Me.Controls.Add(MyDataGridView)
     
     
     
    'On met 5 colonnes
     
    MyDataGridView.ColumnCount = 5

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    ... sans la créer de manière graphique car je trouve que c'est assez long a paramètres toutes les colonnes, etc...
    Rien ne vous empêche de mettre le dataGridView sur la form en mode graphique et de régler les colonnes via programmation par le nom du dataGridView, c'est pour moi le plus facile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With MonDataGridView
        .DataSource = MaView
        '...
    End With

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    J'ai crée une datagridview de manière graphique, ensuite j'ai rajouté le nombre de colonnes, le nom des colonnes etc.... avec des lignes d'instruction :

    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
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            tm_gestion.Start() 'Démarrage du timer
            'Créer 8 colonnes
            DataGridView1.ColumnCount = 8
     
            With (DataGridView1)
     
     
                .RowHeadersVisible = False 'Supprime la premiere colonnes
     
                'On donne le nom des colonnes
     
                .Columns(0).Name = "Akc"
                .Columns(0).AutoSizeMode = Windows.Forms.DataGridViewAutoSizeColumnMode.None
                .Columns(0).Width = 50
     
                .Columns(1).Name = "Time In"
     
                .Columns(2).Name = "Unit"
     
                .Columns(3).Name = "Module/param"
     
                .Columns(4).Name = "Description"
                .Columns(4).AutoSizeMode = Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
     
                .Columns(5).Name = "Alarm"
     
                .Columns(6).Name = "Message"
                .Columns(6).AutoSizeMode = Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
     
                .Columns(7).Name = "Priority"
     
            End With
        End Sub
    Lorsque j'essaye de remplire mon tableau avec des lignes, sa me crée des lignes en illimité non stop avec rien a l'interieur sauf dans la premier colonne il y a "System.String[]", voila mon code :

    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
    Private Sub tm_gestion_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tm_gestion.Tick
     
            If S >= Alarm1.Seuil  Then
                Dim row0 As Object
                'Réglage de l'aquitement
                Alarm1.Ack = "non acquitée"
                'Réglage de la date d'apparition de l'alarme
     
                Alarm1.TimeIn = Date.Now
     
     
                Alarm1.NiveauAlarm = "Defaut"
                Alarm1.Priority = 1
     
                row0 = {Alarm1.Ack, Alarm1.TimeIn, Alarm1.Unit, Alarm1.ModuleParam, Alarm1.Description, Alarm1.NiveauAlarm, Alarm1.Message, Alarm1.Priority}
                DataGridView1.Rows.Add(row0)
            End If
     
            If S >= Alarm2.Seuil  Then
                Dim row1 As Object
                'Réglage de l'aquitement
                Alarm2.Ack = "non acquitée"
                'Réglage de la date d'apparition de l'alarme
     
                Alarm2.TimeIn = Date.Now
     
                Alarm2.NiveauAlarm = "Defaut"
                Alarm2.Priority = 2
     
                row1 = {Alarm2.Ack, Alarm2.TimeIn, Alarm2.Unit, Alarm2.ModuleParam, Alarm2.Description, Alarm2.NiveauAlarm, Alarm2.Message, Alarm2.Priority}
                DataGridView1.Rows.Add(row1)
            End If
     
        End Sub
    Je rappel que je suis entrain de réaliser un gestionnaire d'alarme et qu'a chaque fois qu'il y a une alarme qui s'active en fonction d'un certain seuil, je dois l'affiché dans un tableau avec toute les données nécessaire.

    PS: Je voudrai bien a long terme aussi pouvoir choisir la couleur de ma ligne en fonction du niveau de propriété et que ma première colonne soit un CheckBox qui permet d'acquittée une alarme une fois qu'on décoche la CheckBox, j'ai essayé mais sa me donnée des erreur affreuse alors je voudrai bien déjà commencer par pouvoir écrire un truc quand je le décide dans mon tableau avant de passer à l'étape supérieur.

    Merci d'avance pour vos solution.

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    J'ai réussi a résoudre le problème des lignes en illimité en ajoutant une seconde condition dans ma boucle If:
    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
    If S >= Alarm1.Seuil And Alarm1.Etat = False Then
                Dim row0 As Object
                'Réglage de l'aquitement
                Alarm1.Ack = "non acquitée"
                'Réglage de la date d'apparition de l'alarme
     
                Alarm1.TimeIn = Date.Now
     
     
                Alarm1.NiveauAlarm = "Defaut"
                Alarm1.Priority = 1
     
                row0 = {Alarm1.Ack, Alarm1.TimeIn, Alarm1.Unit, Alarm1.ModuleParam, Alarm1.Description, Alarm1.NiveauAlarm, Alarm1.Message, Alarm1.Priority}
                DataGridView1.Rows.Add(row0)
                Alarm1.Etat = True
            End If
    Cette seconde condition est fausse au début, donc on entre dans la boucle, ensuite, elle deviens vrai donc on reviens plus dans la boucle.

    Par contre j'ai tjs "System.String[]" dans le premier élément de ma ligne lors de la création de la ligne.

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 263
    Par défaut
    C'est bon, je trouve la solutions moi même, j'ai impression de faire un monologue lol, le problème est due au Type de la viable rows0 que j'ai crée, je l'ai supprimer et j'ai directement ajouté les éléments que je souhaite mettre dans ma ligne entre les parenthésé du Add :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    If S >= Alarm1.Seuil And Alarm1.Etat = False Then
                'Réglage de l'aquitement
                Alarm1.Ack = "non acquitée"
                'Réglage de la date d'apparition de l'alarme
     
                Alarm1.TimeIn = Date.Now
     
     
                Alarm1.NiveauAlarm = "Defaut"
                Alarm1.Priority = 1
                'row0 = {Alarm1.Ack, Alarm1.TimeIn, Alarm1.Unit, Alarm1.ModuleParam, Alarm1.Description, Alarm1.NiveauAlarm, Alarm1.Message, Alarm1.Priority}
                DataGridView1.Rows.Add({"tutu", "tutu", "tutu", "tutu", "tutu", "tutu", "tutu", "tutu"})
                Alarm1.Etat = True
            End If
    Et j'obtient une belle ligne de "tutu"

    Sinon j'ai tjs envie de savoir comment modifier la couleur d'un ligne on fonction du niveau de priorité, comment trié mes lignes en fonction du niveau de priorité de chaque ligne et de la date. Et pour finir, rajouté un checkbox a la premier colonne qui permet d'acquittée une alarme.

    Merci d'avance pour vos solution.

  6. #6
    Expert confirmé 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
    Par défaut
    j'ai tjs envie de savoir comment modifier la couleur d'un ligne on fonction du niveau de priorité
    Gérer l'event CellFormating de la DataGridView.

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir,

    content que vous ayez trouvé des solutions par vous même

    Concernant le dataGridView, sur MSDN y'a une bonne petite section le concernant : Vue d'ensemble du contrôle DataGridView (Windows Forms)

    Via cette section on a accès à une sous section qui vous intéressera : Personnalisation du contrôle DataGridView Windows Forms ainsi que Mises en forme et styles de base dans le contrôle DataGridView Windows Forms

    Vous pouvez aussi regarder au niveau des évènements du DataGridView en faisant un rapide tour, un évènement saute tout de suite au yeux, c'est CellFormatting (qu'on retrouvait aussi dans les références de Mises en forme et styles de base dans le contrôle DataGridView Windows Forms)

    Citation Envoyé par msdn
    vous pouvez personnaliser la mise en forme en gérant l'événement CellFormatting. Cet événement vous permet d'indiquer la valeur d'affichage exacte, ainsi que les styles de cellule, tels que les couleurs d'arrière-plan et de premier plan, à utiliser pour l'affichage des cellules. Cela signifie que vous pouvez gérer cet événement pour tout type de mise en forme de cellule, que la valeur de la cellule elle-même ait besoin ou non d'une mise en forme.
    Toujours sur les mêmes pages à gauche dans les liens un rapide coup d'oeil et je vois : Tri des données dans le contrôle DataGridView Windows Forms

    Sur la vue d'ensemble on voyait aussi : Types de colonnes dans le contrôle DataGridView Windows Forms où on retrouve DataGridViewCheckBoxColumn

    Voilà, en quelque minute msdn donne toutes les réponses.

    J'espère que vous trouverez votre bonheur dedans, si vous avez un problème sur la mise en plus d'une d'elle n'hésitez pas.

    Bon code

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/06/2007, 01h13
  2. Créer une vue avec des onglets
    Par Flackou dans le forum MFC
    Réponses: 2
    Dernier message: 14/06/2007, 11h43
  3. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48
  4. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48
  5. Créer une vue avec des requêtes UNION ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/04/2005, 12h37

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