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 :

[VB.NET] DataGrid ArrayList


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 72
    Par défaut [VB.NET] DataGrid ArrayList
    voila je suis sur vb.net j'ai un datagrid relier a un arraylist avec un DataGridTableStyle sur mon datagrid.

    je lie mon datagrid avec mon arraylist comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       DataGridDetPlaquette.DataSource = MonTableau
    le probleme etant que quand je change mon tableau (un add par exemple)

    je relance mon rafreshissement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataGridDetPlaquette.DataSource = Nothing
    DataGridDetPlaquette.DataSource = MonTableau
    tout se passe bien mais des que je sort de ma grille et que je rerentre il me met :

    ---------------------------
    Erreur lors de la validation de la ligne avec le magasin de données d'origine.
    ---------------------------
    L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.

    Nom du paramètre*: index Souhaitez-vous corriger la valeur*?
    ---------------------------
    Oui Non
    ---------------------------
    avez vous une idée d'ou cela peut venir ?
    merci d'avance.

  2. #2
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    Cela vient du fait que ta datagrid n'a rien compris a ton refresh

    Si tu veux notifier proprement ton datatgrid d'un changement de ton arraylist, il faut que tu fasse une classe qui herite de l'arraylist et implemente IBindingList. Puis tu leves l'evenement ListChanged

    Si tu ne fais pas cela tu riques de rencontrer pas mal de pb lors de l'ajout mais aussi de la supression, tant au niveau d'un ajout/supression a l'arraylist directement, tant au niveau d'un ajout/supression par la datagrid

    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
     
    Class myCollection
        Inherits ArrayList
        Implements IBindingList
     
    'la classe qui gere les add new depuis le datagrid
    Public Function AddNew() As Object Implements System.ComponentModel.IBindingList.AddNew
        'on cree un nouvel item (du meme type que ceux qui se trouvent dans l'arraylist
        Dim u as New MonItem
     
        'creates event args 
        Dim lca As New ListChangedEventArgs(ListChangedType.ItemAdded, MyBase.Count - 1)
     
        'notifies binding that a new item was added
        RaiseEvent ListChanged(Me, lca)
     
        return u
    End Function
     
    'la classe qui gere la supression par l'arraylist
    Public Overloads Overrides Sub RemoveAt(ByVal index As Integer)
        'removes item from arraylist
        MyBase.RemoveAt(index)
     
        'create event args with fastobjectcollection index
        Dim lca As New ListChangedEventArgs(ListChangedType.ItemDeleted, index)
     
        'raises event to notify binding of removed element
        RaiseEvent ListChanged(Me, lca)
    End Sub
     
    ...
     
    End Class
    idem pour le Add etc etc...

  3. #3
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2002
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 72
    Par défaut
    merci.
    mais on est obligé de faire tout ça !!!
    personne n'aurai deja fait tout cet objet ?

  4. #4
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    mais on est obligé de faire tout ça !!!
    pour rendre une arraylist 100% conforme au binding: oui et je pense que c'est une bonne chose car cela permet de cacher la mecanique du binding dans le code de la collection et non pas de le saupoudrer de partout: un refresh par ci apres avoir cliqué sur un bouton, un refresh par la au chargement de le form... etc

    Voila un bon article qui décrit les interfaces utiles pour le binding en .net (avec de la source)
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadvnet/html/vbnet02252003.asp

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

Discussions similaires

  1. [VB.Net/Datagrid-Arraylist] Comment râfraichir l'affichage?
    Par bguihal dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/02/2006, 13h26
  2. [VB.NET] [WinForms] [DataGrid][ArrayList] Affichage colonnes
    Par Misterburma dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/04/2005, 11h45
  3. [VB.NET] Datagrid + CheckBox : Cocher toutes les cases
    Par sirex007 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 24/05/2004, 15h33
  4. [VB.NET] Datagrid - Récupérer CheckBox cochées
    Par nmerydem dans le forum ASP.NET
    Réponses: 16
    Dernier message: 18/05/2004, 13h28
  5. [VB.NET] Datagrid dans tabstrip : bug ?
    Par necro dans le forum ASP.NET
    Réponses: 13
    Dernier message: 23/02/2004, 10h23

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