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 :

Afficher le contenu de plusieurs collections : Quelles solutions ?


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut Afficher le contenu de plusieurs collections : Quelles solutions ?
    Bonjour à tous,

    Je crée un logiciel en C# qui a pour but final d'afficher Date, Libellé d'opération, Montant débité, Montant Crédité,... Sur une même ligne.

    Mon envie serait de faire s'afficher tout cela en ligne, une ligne par opération dans le style suivant :

    01/01/08 Essence 50€ 0€

    De plus quelques petites idées suplémentaires pour paufiner le tout :
    - Pour aider à la lecture, une ligne sur deux sera légèrement plus foncée que celle qui la précède ;
    - Les colonnes seront limités dans l'espace grâce à une taille en pixel ;
    - Une séparation (barre verticale) entre les colonnes est souhaitable.

    Mais je ne sais pas quel composant utiliser pour ce faire ni comment m'y prendre.

    A vos clavier,
    et merci bien.

    Nicolas

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    http://msdn.microsoft.com/fr-fr/libr...agridview.aspx
    Et mets la collection qui contient tes données dans la propriété DataSource

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Merci Tomlev, ça rejoins un peu, voir même beaucoup ce que j'ai lu de par le net. Mais on m'avait dit que la datagridview était compliqué d'utilisation pour qui ne s'y connait pas vraiment.

    Donc je vais approfondir dans ce sens.

    En te remerciant

    Nicolas

    PS : Je mettrais en résolu dès que ce sera réellement sûr

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Phreak0x Voir le message
    Mais on m'avait dit que la datagridview était compliqué d'utilisation pour qui ne s'y connait pas vraiment.
    C'est compliqué à première vue, parce qu'il y a beaucoup de propriétés et de méthodes, mais l'essentiel de ce que tu as besoin de savoir se résume à pas grand chose...
    - DataSource : source des données. Ca peut être, par exemple, un DataTable, un tableau, une liste d'objets...
    - Columns : la collection des colonnes du DataGridView. Les colonnes peuvent être générées automatiquement d'après la structure des données (AutoGenerateColumns = true), ou manuellement. Dans ce cas, il faut indiquer dans la propriété DataPropertyName de chaque colonne le nom du champ de données à afficher dans cette colonne.
    - Rows : la collection des lignes du DataGridView. Si tu as défini la propriété DataSource, cette collection est remplie automatiquement. Une autre approche est de la remplir manuellement, mais à mon sens ça diminue l'intérêt du DataGridView...


    Dans ton cas, le plus simple serait de définir une classe qui représente une opération, et de mettre une liste d'opérations comme DataSouce du DataGridView.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Plus je regarde pour chercher la solution de ce côté, plus je me dis que ça doit être pas mal.

    Ceci dit je me heurte à un mur du nom de Datamember.

    Qu'est-ce que ce Datamember ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    De plus, je ne comprends pas l'utilisation de l'autogeneratecolumns. Se sert-il des attributs de ma class opération pour créer ses colonnes ?

    Enfin si colonne il y a. A la main j'arrive à les faire s'afficher (quoique je n'arrive pas à utiliser le dataproperty) alors qu'avec l'autogenerate...

    Un petit coup de pouce ?

    Merci bien

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Phreak0x Voir le message
    Qu'est-ce que ce Datamember ?
    Quand tu mets comme DataSource un objet qui contient plusieurs collections (au sens large), ça indique laquelle utiliser. Par exemple si c'est un DataSet, DataMember indique quelle DataTable utiliser.
    Dans ton cas, tu peux laisser vide cette propriété.

    Citation Envoyé par Phreak0x Voir le message
    De plus, je ne comprends pas l'utilisation de l'autogeneratecolumns. Se sert-il des attributs de ma class opération pour créer ses colonnes ?
    Oui. Si je me souviens bien, il affiche toutes les propriétés publiques (seulement les propriétés, pas les champs)

    Citation Envoyé par Phreak0x Voir le message
    Enfin si colonne il y a. A la main j'arrive à les faire s'afficher (quoique je n'arrive pas à utiliser le dataproperty) alors qu'avec l'autogenerate...
    Vérifie que les attributs de ta classe sont bien des propriétés et non des champs (cf. ci-dessus)
    Pour utiliser DataPropertyName, il suffit d'y mettre le nom de la propriété à afficher dans la colonne (par exemple "Date", "LibelleOperation"...)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    En vérité les attributs de la class Operation sont tous déclaré en private.
    Mais n'est-il pas possible de déclarer en DataPropertyName ou dans un autre champs, les accesseurs permettant de récuper les valeurs des attributs. Parce que je trouve ça un peu plus propre que de passer tous mes attributs en public.

    Enfin, qu'est-ce que tu appelles des propriétés d'une classe, et des champs d'une classe ?

    Merci pour ton aide.

    Nicolas

  9. #9
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Enfin, qu'est-ce que tu appelles des propriétés d'une classe, et des champs d'une classe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class MaClasse
    {
        // Un champ 
        private int _monEntier;
     
        // Une propriété associée au champ
        public int MonEntier
        {
            get { return _monEntier; }
            set { _monEntier = value; }
        }
     
        ...
    }
    Sinon je n'utilise pas la génération automatique des colonnes, je préfère créer une source de données sur mon objet métier (menu Données > Ajouter une nouvelle source de données ... > Objet, puis sélection de la classe à utiliser comme structure de la source de données).

    A partir de cette source de données je place une BindingSource sur mon écran, en faisant glisser un "champ" de la source de données générée (menu Données > Afficher les sources de données, pour y accéder) précédemment sur l'écran. Cela crée une BindingSource (le nom est de la forme maClasseBindingSource pour un objet métier du type MaClasse) et un BindingNavigator. Je supprime ensuite le BindingNavigator car je ne m'en sers pas.

    Au niveau du DataGridView j'indique la BindingSource placée précédemment comme DataSource. Cela positionne toutes les colonnes possibles (une par propriété publique présente au niveau de l'objet métier). Après il suffit de modifier les colonnes suivant le besoin. Le DataPropertyName d'une colonne correspond alors à une propriété de l'objet (si on ouvre la Combo associée en mode design on le voit bien).

    Pour finir, il suffit d'alimenter la BindingSource (propriété DataSource) avec une liste d'objet métier afin de retrouver les données dans le DataGridView.
    Pas de questions techniques par MP

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Merci Stormimon pour ces précisions. Ceci dit je préfère, du moins pour l'instant passé par le coté programmation. Bon j'ai fouillé un peu plus loin du côté du Datagridview.

    J'aurais besoin d'un avis sur ce que j'ai fait.

    Mon Datagridview est créé en design est porte (name) la valeur "ListOper" (pour liste d'opération).
    Ensuite je l'intialise comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ListOper.DataSource = Comptabilité.Program.UserConnecter.get_LesOperUser();
    ListOper.AutoGenerateColumns = false;
    ListOper.Columns.Add(Dat);
    ListOper.Columns.Add(Libell);
    ListOper.Columns.Add(Debi);
    ListOper.Columns.Add(Credi);
    Et enfin ces colonnes sont déclarés ainsi :

    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
     
    DataGridViewColumn Dat = new DataGridViewColumn();
    Dat.DataPropertyName = "get_Dte()";
    Dat.HeaderText = "Date";
     
    DataGridViewColumn Libell = new DataGridViewColumn();
    Libell.DataPropertyName = "get_Dte()";
    Dat.HeaderText = "Libellé";
     
    DataGridViewColumn Debi = new DataGridViewColumn();
    Debi.DataPropertyName = "get_Montant()";
    Debi.HeaderText = "Débit";
     
    DataGridViewColumn Credi = new DataGridViewColumn();
    Credi.DataPropertyName = "get_Montant()";
    Credi.HeaderText = "Crédit";
    Bon c'est pas du copier coller, donc j'ai peut-être fait des erreurs de frappes ou de majuscule. Ca c'est pas grave. Ce qu'il faut retenir c'est les get_machintrucchouette, sont tous des accesseurs (ce que je crois que vous appelez des propriétés) de la class opération que j'ai déclaré comme DataSource du DataGridView. Ceci dit, j'en suis là de ma réflexion.

    En faites quand je démarre l'application, ma collection oppération est vide. Ensuite je la rempli avec une opération (ça ça marche) et je réintialise le Datasource du DatagridView. Mais rien de mieux que si la collection était vide.

    Valà où j'en suis.

    Nicolas

  11. #11
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    La valeur de DataPropertyName doit correspondre au nom d'une propriété de ton objet et pas à celui d'une méthode (cf. la MSDN). C'est la raison de ton problème.

    Tu dois donc modifier toutes tes méthode get (éventuellement set) pour en faire des propriétés que tu utiliseras comme DataPropertyName.
    Pas de questions techniques par MP

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Donc si je comprends bien, je dois réécrire de la même manière que celle que tu m'as montré un peu plus haut, avec le get et le set dans la même fonction ?

    Nicolas

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Bon je viens de passer toutes mes méthodes en propriétés de champs, donnant ainsi à la class opération la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public DateTime Dte
    {
    get { return this.Dte }
    set { this.Dte = value; }
    }
     
    //Ainsi de suite pour Montant, Libellé,...
    Ceci dit maintenant, quand j'essaie d'instancier un nouvel objet il me dit qu'il ne peut pas utiliser le set du DateTime parce qu'il y a dépassement de la pile. Pourtant la variable passer dans le constructeur est toute droite tirée d'un DateTimePicker. Pareil si je passe, dans mon constructeur, la valorisation du montant avant la valorisation de la date, il me renvoie la même erreur d'overflow.

    Il doit y avoir un truc que je n'ai pas compris.

    Nicolas

  14. #14
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ce n'est pas comme ça que l'on fait une propriété. Pour ce qui est du dépassement de pile c'est normal, puisque tu rappelles la propriété à l'infini (this.Dte = value rappelle la propriété, qui rappelle la propriété, ... et pareil pour return this.Dte).

    La propriété doit être associée à un champ, cf. le code que j'ai mis un peu plus haut sur la différence entre champ et propriété.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private DateTime _date;
    public DateTime Dte
    {
    get { return _date }
    set { _date = value; }
    }
    Les propriétés ne sont qu'une autre manière de faire des accesseurs/mutateurs avec des méthodes (Get/Set), il faut donc un champ à côté.
    Pas de questions techniques par MP

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Bon après rectification il se trouve que mon datagridview fonctionne un tantinet mieux. C'est à dire que l'autogeneratecolumns fonctionne à merveille (disons qu'il affiche automatiquement les colonnes).

    Pour ce qui est des propriétés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public DateTime _Dte
    {
    get { return this.Dte; }
    set { this.Dte = value; }
    }
     
    // ainsi de suite pour le reste...
    Donc maintenant je ne sais pas si l'autogeneratecolumns est censé me mettre tout seul mes données dans les colonnes, donc peut-être qu'il y a encore une manip ou deux pour associer les colonnes aux champs. Mais je pense tout de même que non.

    Donc ma question est la suivante. Partant d'une collection vide et y rajoutant des objets opération, dans cette collection, il faut que je recharge mon datagridview. Comment ?

    Merci à vous deux.

    Nicolas

  16. #16
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Soit tu réaffectes ta DataSource, soit la DataSource pointe sur une collection à laquelle tu as accès et à ce moment si tu modifies cette collection le DataGridView affichera les modifications tout seul comme un grand.

    Donc dans ton cas, si la collection que tu modifies est celle qui est mise en DataSource de ton DataGridView, la modifier met à jour le DataGridView. Par contre cela ne fonctionne que si tu ajoutes ou supprimes des éléments de la collection. Si tu modifies les données d'un objet existant de la collection tu devras appeler la méthode Refresh du DataGridView.
    Pas de questions techniques par MP

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Merci Stormimon, ceci dit je ne suis pas sûr qu'il se mette à jour tout seul comme un grand :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Operation op = new Operation(new DateTime(2008, 08, 01), 230, new Libelle("ESS"), Comptabilité.Program.UserConnecter);
    Comptabilité.Program.UserConnecter.set_LesOperUser(op);
     
    op = new Operation(new DateTime(2008, 08, 02), 5, new Libelle("LALA"), Comptabilité.Program.UserConnecter);
    Comptabilité.Program.UserConnecter.set_LesOperUser(op);
     
    ListOper.AutoGenerateColumns = true;
    ListOper.DataSource = Comptabilité.Program.UserConnecter.get_LesOperUser();
     
    op = new Operation(new DateTime(2008, 08, 03, 12, new Libelle("QSLA"), Comptabilité.Program.UserConnecter);
    Comptabilité.Program.UserConnecter.set_LesOperUser(op);
     
    ListOper.Refresh();
    ESS et LALA s'affiche correctement. Mais QSLA non, malgré le refresh.
    J'ai essayé sans le refresh et j'ai également essayé en réindiquant le DataSource. Rien de tout ça n'a malheureusement porté ses fruits.

    Donc je coince...

    Quelqu'un aurait une idée...

    Nicolas

  18. #18
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    A mon avis, la collection que tu récupères avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comptabilité.Program.UserConnecter.get_LesOperUser();
    N'est pas celle mise à jour lorsque tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comptabilité.Program.UserConnecter.set_LesOperUser(op);
    Quand je dis que ce n'est pas la même, je ne parle pas en terme de contenu mais de référence : l'objet n'est pas le même.

    En terme de code cela signifie que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Collection coll1 = Comptabilité.Program.UserConnecter.get_LesOperUser();
    ...
    Comptabilité.Program.UserConnecter.set_LesOperUser(op);
    ...
    Collection coll2 = Comptabilité.Program.UserConnecter.get_LesOperUser();
    // coll1 et coll2 n'ont pas le même nombre d'éléments
    Maintenant je peux me tromper, c'est juste l'impression que j'ai

    Pour la forme un petit exemple bidon pour voir que ça marche

    On prend un formulaire, on colle un DataGridView et un bouton dessus. Aucun paramétrage en mode design nécessaire.
    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
    public partial class Form1 : Form
    {
        BindingList<Client> _list;
     
        public Form1()
        {
            InitializeComponent();
            _list = new BindingList<Client>();
            dataGridView1.DataSource = _list;
        }
     
        private void Form1_Load(object sender, EventArgs e)
        {
            _list.Add(new Client(1, "Bernard"));
            _list.Add(new Client(2, "Roger"));
            _list.Add(new Client(3, "Marcel"));
        }
     
        private void button1_Click(object sender, EventArgs e)
        {
            _list.Add(new Client(4, "Raoul"));
        }
    }
    et la classe Client qui va avec
    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
    public class Client
    {
        private int _id;
        private string _nom;
     
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }
     
        public string Nom
        {
            get { return _nom; }
            set { _nom = value; }
        }
     
        public Client(int id, string nom)
        {
            _id = id;
            _nom = nom;
        }
    }
    Pas de questions techniques par MP

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 25
    Points : 10
    Points
    10
    Par défaut
    Oui effectivement si pour toi le nombre d'éléments de la collection LesOperUser est le nombre qui ressort lors d'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Comptabilité.Program.UserConnecter.get_LesOperUser().Count();
    Effectivement, à chaque fois que je fait un set_LesOperUser(), les éléments augmentent de un. Ce qui me semble normal étant donné que je rajoute un objet à la collection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void set_LesOperUser(Operation Op)
    {
    this.LesOperUser.Add(Op);
    }
    Alors peut-être qu'il y a une erreur dans ma réflexion ou façon de procéder, je reste encore un débutant en objet.

    Si je me trompe sur le terme "éléments" que tu emploie, fait le moi savoir.

    Ceci dit, peut-être que le raffraîchissement se fait, effectivement avec un bindinglist mais avec une collection, à savoir que moi j'utilise un list<> ? Enfin je sais pas, je suis comme qui dirait : un peut tout perdu

    Merci pour ton aide

    Nicolas

  20. #20
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Effectivement cela fonctionnera beaucoup mieux avec une BindingList, c'est prévu pour après tout ^^
    Pas de questions techniques par MP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] afficher le contenu de plusieurs cellule dans une seule
    Par Philippe76 dans le forum Excel
    Réponses: 4
    Dernier message: 02/04/2011, 19h00
  2. Procédure qui affiche le contenu le plusieurs SELECT
    Par metalcoyote dans le forum PL/SQL
    Réponses: 5
    Dernier message: 07/11/2008, 09h40
  3. Réponses: 12
    Dernier message: 10/08/2007, 15h45
  4. Réponses: 3
    Dernier message: 03/07/2006, 13h45
  5. [10] afficher le contenu d'une collection
    Par noinneh dans le forum Oracle
    Réponses: 6
    Dernier message: 14/02/2006, 13h37

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