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 Action sur ce qui est affiché


Sujet :

VB.NET

  1. #1
    Membre habitué
    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
    Points : 148
    Points
    148
    Par défaut datagridview Action sur ce qui est affiché
    Bonjour,

    J'ai déjà un programme qui marche bien avec une datagridview dynamique qui gère l'arriver et l'acquittement d'alarme et je souhaite pouvoir rajouter un bouton qui me permet d'acquitter toutes les alarmes qui sont affichées dans le datagridview et visible, c'est a dire, les alarmes qui sont pas dans le champ de vision ne sont pas acquittées.

    Crée un bouton et programme une partie du programme est facile mais je vois pas comment géré la si une alarme est dans le champ de vision du datagridview ou pas !!

  2. #2
    Membre habitué
    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
    Points : 148
    Points
    148
    Par défaut
    J'ai pensé a une fonction dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub btnAcquittement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAcquittement.Click
            Dim z As Integer
            For z = 0 To i - 1
                If "Si l'alarme est dans le champ de vision" Then
                    "Aquitté alame"
                End If
            Next
        End Sub
    i = représente le nombre d'alarme dans mon datagridview.
    z = permet de verifier alarme par alarme (ligne par ligne).

    Ce qu'il me manque, c'est la condition de la boucle If car l'aquittement d'une alarme, je sais déjà le faire mais j'ai pas voulu le mettre ici étant donnée qu'il est hors sujet !!

    Merci d'avance pour vos solutions !!

  3. #3
    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
    Pour voir si une ligne d'un dataGridView est visible, on peut utiliser la propriété FirstDisplayedScrollingRowIndex et la methode DisplayedRowCount(bool includePartialRow).
    Code en C# :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bool IsRowFullyVisible = RowIndex>=FirstDisplayedScrollingRowIndex && 
                             RowIndex< FirstDisplayedScrollingRowIndex+DisplayedRowCount(false)
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre habitué
    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
    Points : 148
    Points
    148
    Par défaut
    Merci bcp pour m'avoir indiquer la méthode car elle suffit a elle seul je trouve et merci d'avoir prit du temps pour rédiger ma condition car de cette maniere, je l'aurai jamais pensé !!

  5. #5
    Membre habitué
    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
    Points : 148
    Points
    148
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Permet de vérifier si une ligne est afficher dans l'entete ou pas et de l'acquittée si c'est le cas.
        Private Sub btnAcquittement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAcquittement.Click
            Dim z As Integer
            For z = 0 To i - 1
                If z >= DataGridView1.FirstDisplayedScrollingRowIndex() And z < DataGridView1.FirstDisplayedScrollingRowIndex() + DataGridView1.DisplayedRowCount(False) And DataGridView1.Rows(z).Cells(0).Value = False Then
                    DataGridView1.Rows(z).Cells(0).Value = True
                End If
            Next
        End Sub

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Permet de vérifier si une ligne est afficher dans l'entete ou pas et de l'acquittée si c'est le cas.
        Private Sub btnAcquittement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAcquittement.Click
            Dim z As Integer
            For z = 0 To i - 1
                If z >= DataGridView1.FirstDisplayedScrollingRowIndex() And z < DataGridView1.FirstDisplayedScrollingRowIndex() + DataGridView1.DisplayedRowCount(False) And DataGridView1.Rows(z).Cells(0).Value = False Then
                    DataGridView1.Rows(z).Cells(0).Value = True
                End If
            Next
        End Sub
    Si tu veux juste parcourir les éléments visible, inutile de parcourir le DataGridView complet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        'Permet de vérifier si une ligne est afficher dans l'entete ou pas et de l'acquittée si c'est le cas.
        Private Sub btnAcquittement_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLigneVisible.Click
            Try ' pour la dernière ligne si vide (ignore l'erreur)
                For z As Integer = DataGridView1.FirstDisplayedScrollingRowIndex() To DataGridView1.FirstDisplayedScrollingRowIndex() + DataGridView1.DisplayedRowCount(False)
                    If DataGridView1.Rows(z).Cells(0).Value = False Then DataGridView1.Rows(z).Cells(0).Value = True
                Next
            Catch ex As Exception
            End Try
        End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Membre habitué
    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
    Points : 148
    Points
    148
    Par défaut
    J'avoue qu'avec ce genre de code, mon programme sera plus optimisé et par conséquence, sa pourrais mieux tourner sans ramer, il me suffit d'adapter ce genre de code sur le reste de mon programme.

    Merci bcp !!

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par dragondumond Voir le message
    J'avoue qu'avec ce genre de code, mon programme sera plus optimisé et par conséquence, sa pourrais mieux tourner sans ramer, il me suffit d'adapter ce genre de code sur le reste de mon programme.
    Si tu veux otimiser ton prgramme, tu peux empécher l'utilisateur d'effectuer des actions inutiles.
    Imaginons qu'il n'y a pas d'alarme actives, ton datagridview est vide. Il ne faut pas que l'utilisateur clique sur le bouton "Acquittement".
    Donc après le chargement du DataGridView, Tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            btnAcquittement.Enabled = Not (DataGridView1.RowCount = 0)
            ' ou bien
            btnAcquittement.Enabled = (DataGridView1.RowCount <> 0)
    Ainsi l'utilisateur ne peux pas agir (tu évites ainsi les risques d'erreurs).

    Autre point il faut éviter de déclencher des exceptions.
    Donc tu laisse le Try Catch pour les erreurs, (on peut toujours avoir un truc imprévu) mais, tu fais des test avec des if pour les éviter les erreurs conrantes plutôt que de laisser des exceptions se déclencher.
    (un test avec un if est très rapide)

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  9. #9
    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
    Donc tu laisse le Try Catch pour les erreurs, (on peut toujours avoir un truc imprévu) mais, tu fais des test avec des if pour les éviter les erreurs conrantes plutôt que de laisser des exceptions se déclencher.
    D'autant plus qu'une exception dégradera notablement les performances si elle se répéte souvent.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2007, 01h35
  2. Réponses: 2
    Dernier message: 25/04/2007, 16h56
  3. 1 enregistrement sur 2 qui est retourné
    Par berceker united dans le forum iReport
    Réponses: 1
    Dernier message: 29/11/2006, 17h07
  4. [VB 2005]Datagridview : action sur ligne
    Par estelledany dans le forum Windows Forms
    Réponses: 1
    Dernier message: 31/05/2006, 11h47
  5. Réponses: 5
    Dernier message: 10/01/2006, 18h23

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