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 :

Quel évènement pour exécuter AllowUserToAddRows du dataGridView ?


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut Quel évènement pour exécuter AllowUserToAddRows du dataGridView ?
    Bonjour à tous, je cherche l’évènement le plus approprié pour exécuter le code suivant :
    Le but est de supprimer la ligne permettant d'entrer de nouvelle données dans le DataGridView dans certaines conditions (Le DataGridView étant lié à une table fille, il me faut absolument une valeur de clé primaire valide issue de la table mère et que ma table lié soit rempli avec la commande Fill avant de pouvoir saisir de nouvelles lignes).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If ConditionsIsValide = True then
    DataGridView1.AllowUserToAddRows = True
    Else
    DataGridView1.AllowUserToAddRows = False
    End If
    Il faudrait un évènement qui se produise après la méthode Fill par exemple ou quelque chose dans le même style au des évènements de DataTable, Bindingsource, DataGridView mais je n'ai pas trouvé.

    Merci beaucoup pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    J'ai mal posé le problème, désolé. En fait j'ai plusieurs problèmes.

    Pour être plus précis j'ai une procédure DataRefresh appelé soit après le chargement d'une table (après la commande Fill), soit dans le Form.Show.

    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
     
    Private Sub DataRefresh()
         If ConditionsIsValide = True then
             DataGridView1.AllowUserToAddRows = True
         Else
             DataGridView1.AllowUserToAddRows = False
         End If
     
         For n = 0 To BindingSourceTaches.Count - 1
               Dim RowView As DataRowView = CType(BindingSourceTaches.Current, DataRowView)
               Dim Row As DataRow = RowView.Row
               Call CalculRowValues(Row) ' Fait des calculs pour actualiser certaines données de la Table nouvellement chargée. 
               Call WriteRowValues(Row)
               BindingSourceTaches.MoveNext()
          Next
               BindingSourceTaches.MoveFirst()
    End Sub
    - Si je place une ligne de code AllowUserToAddRows = False dans le Form.show et ensuite j'execute DataRefresh (après le chargement de la table), la méthode AllowUserToAddRows = True empêche le chargement des lignes dans le DataGridView.

    - Si je place la même ligne de code AllowuserToAddRows = False dans le Form.Load, ça fonctionne mais j'ai alors un autre problème :
    En effet la procédure DataRefresh et notamment le parcours de toutes les lignes du BindingSource prends plusieurs seconde (2s pour parcourir 15 lignes) en figeant le chargement de la fenêtre pendant ce laps de temps alors que cette même procédure exécuté dans le Form.show prends 50ms en tout.
    Aprés une analyse plus approfondie, ce n'est pas mes procédures CalculRowValues et WriteRowValues qui me prennent du temps mais la commande MoveNext (J'ai placé un chrono avant et après pour vérifier). Alors que je n'est aucun évènements qui se déclenche sur MoveNext. En cherchant encore un peu plus je me suis appercue que ce qui me ralentie cette procédure sont 2 contrôles DateTimePicker bindés sur la propriété "Value". Si je binde la propriété "Text" de ces mêmes contrôles je retrouve mes 50ms environ.
    Franchement je ne comprends pourquoi j'ai un tel ralentissement et c'est ce qui ma amené à utiliser Form.show. Et pour régler le problème du AllowUserToAddRows j'ai l'intention de couper ma procédure en 2 : une qui se lance dans le Form.show et une autre qui se lance dans le Form.Load.

    Donc je pense avoir une solution mais si vous avez une explication ou solution plus interressante ça m'interresse beaucoup car j'avoue ne pas comprendre ces 2 comportements.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Houla, je suis mal partie dans mon analyse, Mon évènement Form.show ne fonctionne pas en fait, du coup je pensais que ma procédure DataRefresh fonctionné plus vite.....
    Donc la commande MoveNext s’exécute dans un temps normal on va dire...(Notez quand même qu'il y a vraiment une différence de vitesse notable selon que l'on binde la propriété "Value" ou "Text" du DateTimePicker).
    En revanche ce qui est moins normal c'est que mon évènement Form.show ne fonctionne plus.
    Le mieux c'est que je passe en résolu, je vais voir ce soucis d’évènement qui à disparu.....

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

Discussions similaires

  1. Quel évènement pour un input pré-rempli ?
    Par hartecel dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/06/2008, 21h27
  2. Quel évènement pour le clic droit
    Par sebac dans le forum VB.NET
    Réponses: 2
    Dernier message: 20/06/2008, 15h41
  3. Réponses: 0
    Dernier message: 26/02/2008, 16h30
  4. Quel événement pour une sortie d'un hide() ?
    Par megaben dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/10/2007, 05h35
  5. Quel événement pour clic sur un sous-form ?
    Par AndréPe dans le forum IHM
    Réponses: 10
    Dernier message: 19/03/2007, 17h11

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