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

C# Discussion :

Alimenter ListView MVC


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Par défaut Alimenter ListView MVC
    Bonjour je suis actuellement en train de restructurer mon programme C# avec un architecture MVC et je souhaiterais alimenter ma ListView par le controller . Pour être plus explicite voilà ou j'en suis.
    Mon controller : Archivage_Controlleurs , classe : "Utiliz"
    A l’intérieur j'ai ceci :

    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
    public string List()
            {
                Modèle.TravellokedConnexion connexion = new Modèle.TravellokedConnexion();
     
                MySqlConnection connection = new MySqlConnection(connexion.ConnexionBDD());       // Connection avec la base de données PHP MYAdmin
     
                var queryall = " SELECT * FROM tb_archivage ";
     
                MySqlCommand cmdall = new MySqlCommand(queryall, connection);
     
                connection.Open();
                using (MySqlDataReader Lire = cmdall.ExecuteReader())
                {
                    while (Lire.Read())  // Boucle While qui regarde toutes les infos que l'on souhaite voir avec la méthode "lire"
                    {
                        string Code_Archi = Lire["Code_Archi"].ToString();
                        string Code_Conges = Lire["Code_Conges"].ToString();
                        string Demande = Lire["Demande"].ToString();
                        string Debut = Lire["Debut"].ToString();
                        string Fin = Lire["Fin"].ToString();
                        string Code_Etat = Lire["Code_Etat"].ToString();
                        string Garantification = Lire["Garantification"].ToString();
                        string Identifiant = Lire["Identifiant"].ToString();
                        string Date_Supression = Lire["Date_Supression"].ToString();
     
                        return Code_Archi + Code_Conges + Demande + Debut + Fin + Code_Etat + Garantification + Identifiant + Date_Supression;
     
     
                    }
     
                }
                return queryall;
            }

    et dans ma VIEW j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    readonly Conntrolleurs.Utiliz utiliz = new Controlleurs.Utiliz();
     
            private void Button_Archi_Refresh_Click(object sender, EventArgs e)
            {
     
                Archi_ListView.Items.Add(new ListViewItem(new[] { utiliz.List() }));// Ajout des nouvelles valeurs dans la list view
     
            }
    Cependant comme l'Item.Add n'est pas avec le reste de la structure d'alimentation de la list View il alimente seulement la première colonne (Voir photo)
    Nom : Capture.PNG
Affichages : 183
Taille : 39,6 Ko

  2. #2
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    C'est quelle techno ? WinForms ? WebForms ? ASP MVC ?

  3. #3
    Membre confirmé
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Par défaut
    Winform , je me sers de la page crée automatiquement avec le forms comme 'VIEW'

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Par défaut
    Ta fonction List retourne un string. Ca ne représente qu'un seul élément. Normal que tu n'ai qu'une seule ligne et une seule colonne.
    Il faut revoir la notion d'objet. Tu as concaténé les valeurs string de ton 1er archivage.
    Si tu veux retourner le premier archivage créé une classe Archivage (original ^^) par exemple pour représenter ta table tb_archivage .
    Tu créé une instance (new), tu mets les valeurs des colonnes dans les propriétés correspondantes et tu retournes l'instance.

    Deuxième problème ta fonction s'appelle List; on sent vu le contenu que tu veux retourner toutes les archives mais tu n'en retourne qu'une seule puisque le mot clef return te fait sortir de la fonction.
    Donc créé une liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<Archivage> artichages = new List<Archivages>();
    Exécute la requête vers ta bdd.
    Boucle sur les résultats (comme tu le fais déjà)
    Créé une instance de Archivage pour chaque ligne reçue (donc dans le while)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var archivage = new Archivage();
    Assigne les valeurs des colonnes dans les propriétés correspondantes (comme dit plus haut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    archivage.Date_Supression = Lire["Date_Supression"].ToString();
    Tu ajoute l'instance de ta classe à ta liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    artichages .Add(archivage);
    Lorsque tu as itéré sur tous tes résultats tu retourne la liste :
    Il te faudra changer le type de retour de ta fonction List; string ne couche pas avec List<Archivage>. Et le nom de ta fonction aussi List quoi d’ailleurs ? Renommer plutôt en GetArchivages(); puisque tu veux récupérer des archivages de ta bdd.

    Vire le deuxième return aussi. ça n'a pas de sens de retourner ta requête SQL.

  5. #5
    Membre confirmé
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Par défaut
    Désolé du mon niveau,
    Ok merci bon je vais essayer de me débrouiller avec tous ces éléments là

    Par contre pour :
    Si tu veux retourner le premier archivage créé une classe Archivage (original ^^) par exemple pour représenter ta table tb_archivage .
    Tu créé une instance (new), tu mets les valeurs des colonnes dans les propriétés correspondantes et tu retournes l'instance.
    J'ai compris l'idée et le but , juste pour l'architecture je le met dans le modèle donc?

    et pour le deuxième return c'est parce que j'avais une erreur alors pas qu'elle m'embête temporairement je l'ai mis là.

  6. #6
    Membre confirmé
    Homme Profil pro
    BAC +3
    Inscrit en
    Octobre 2018
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : BAC +3

    Informations forums :
    Inscription : Octobre 2018
    Messages : 164
    Par défaut
    Bon je reprend le sujet du topic parce que je me suis égaré voici ou j'en suis pour gérer une ListView avec une architecture MVC
    Tag : C# , VisualStudio , Winform , MVC

    Modèle 1:

    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
     
    class TravellokedConnexion
        {
            public string ConnexionBDD()
            {
                string ConnexionBDD = "blabalbla tout marche ici";
     
                return ConnexionBDD;
            }
        }
     class SQL_Join
        {
            public string JointurePK_FK()
            {
                string Jointure = " JOIN tb_conges ON tb_agent.Code_Conges = tb_conges.Code_Conges JOIN tb_etat ON tb_conges.Code_Etat = tb_etat.Code_Etat";
     
                return Jointure;
            }
     
     
        }
    Modèle 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Modèle_Sql
        {
            public string SelectAgent()
            {
                string SelectAgent = "SELECT tb_agent.Code_Conges , tb_agent.Identifiant , Demande , Debut , Fin , Etat , Garantification FROM tb_agent";
     
                return SelectAgent;
            }
        }
    Contrôleur :

    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
    35
    36
     
    class Alimentation
        {
            Vue.Root_IHM root;
            readonly Modèle.TravellokedConnexion connexion = new Modèle.TravellokedConnexion(); // Appel de la déclaration de connexion du modèle
            readonly Modèle.Modèle_Sql requery = new Modèle.Modèle_Sql(); // Appel le modèle SQL
            readonly Modèle.SQL_Join @Join = new Modèle.SQL_Join(); // Appel des jointues SQL necèssaire aux requètes
     
            public void List_Demande()
            {
                root = new Vue.Root_IHM();
                MySqlConnection connection = new MySqlConnection(connexion.ConnexionBDD());       // Connection avec la base de données PHP MYAdmin
     
     
                MySqlCommand cmdall = new MySqlCommand( requery.SelectAgent() + Join.JointurePK_FK(), connection);
     
                connection.Open();
                using (MySqlDataReader Lire = cmdall.ExecuteReader())
                {
                    while (Lire.Read())  // Boucle While qui regarde toutes les infos que l'on souhaite voir avec la méthode "lire"
                    {
                        string Code_Conges = Lire["Code_Conges"].ToString();
                        string Demande = Lire["Demande"].ToString();
                        string Identifiant = Lire["Identifiant"].ToString();
                        string Debut = Lire["Debut"].ToString();
                        string Fin = Lire["Fin"].ToString();
                        string Etat = Lire["Etat"].ToString();
                        string Garantification = Lire["Garantification"].ToString();
     
                        root.Root_Listview_Demande.Items.Add(new ListViewItem(new[] { Code_Conges, Demande, Identifiant, Debut, Fin, Etat, Garantification }));// Ajout des nouvelles valeurs dans la list view
     
                    }
                }
                connection.Close();
     
            }
    Vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alimentation.List_Demande();


    Cependant la ListView n'affiche pas du tout les données . Mais le code intégrer dans le contrôleurs est bon car lorsque je l'utilise (sans les instances d'accès à la listView de la vue(root.Listview....)) directement dans la vue,donc sans architecture MVC mais en spaghetti. Tout marche...

    J'ai mis les colonnes de la listview en public rien ne change ...

    De l'aide SVP

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

Discussions similaires

  1. [Débutant] Visual Studio 2010 VB.NET alimenter listview avec valeur null
    Par Tchebichef dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/04/2016, 16h42
  2. Problème alimenter Listview
    Par Beaudelicius dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/09/2011, 15h19
  3. ListView alimenté par SQLITE3 et dont chaque ligne contient 3 boutons
    Par lauterry dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 04/10/2010, 01h58
  4. [MVC] Binder un ListView
    Par User.Anonymous dans le forum C#
    Réponses: 0
    Dernier message: 29/10/2009, 16h58
  5. Listview et alimentation combo et textbox
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/02/2008, 09h40

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