Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage de la ListView

Xamarin Forms & MySQL

Sujet résolu
    5 juillet 2021 à 14:12:04

    Bonjour, je débute en C# et je fais un petit projet avec Xamarin Forms, j'ai une BDD MySql et avec mon application, je me connecte dessus pour récupérer des données, seulement, les données ne s'affichent pas. Surement une mauvaise modélisation de mes données récupérés qui empêchent de les afficher. Merci d'avance pour votre aide.

    Ma classe : MesClients.cs 

    namespace TractoApp.Data
    {
        public class MesClients
        {
            //public int id_customer;
            public string firstname;
            public string lastname;
    
            public MesClients(/*int id_customer,*/ string firstname, string lastname)
            {
                //this.id_customer = id_customer;
                this.firstname = firstname;
                this.lastname = lastname;
            }
    
            /*public int getId_customer()
            {
                return id_customer;
            }*/
            public string getFirstname()
            {
                return firstname;
            }
            public string getLastname ()
            {
                return lastname;
            }
        }
    }

    Ensuite : ComptePage.xaml

    <ListView x:Name="clientsbdd">
                <ListView.ItemsSource>
                    <x:Array Type="{x:Type x:String}">
                        <x:String>Prénom</x:String>
                        <x:String>Nom</x:String>
                    </x:Array>
                </ListView.ItemsSource>
            </ListView>

    J'y ai crée une ListView pour afficher 2 données de ma table.

    Et pour finir : ComptePage.xaml.cs

    private void VoirBdd(object sender, EventArgs e)
            {
                
                if (Connecté)
                {
                    MySqlCommand cmd = new MySqlCommand("SELECT * FROM ps_customer", cn);
                    using (MySqlDataReader Lire = cmd.ExecuteReader())
                    {                    
                        List<MesClients> clientsbdd = new List<MesClients>();
                        while (Lire.Read())
                        {
                            string Prénom = Lire["firstname"].ToString();
                            string Nom = Lire["lastname"].ToString();
    
                            clientsbdd.Add(new MesClients { firstname = Prénom, lastname = Nom });
                        }
                    }
                }
                else
                {
                    DisplayAlert("Infos:", "Plantage", "Ok");
                }
            }


    J'appelle ma fonction de connexion qui se valide bien, j'initialise une List que je me prépare pour remplir tant qu'il y a des données sur ma table et apres, je demande à l'afficher.

    Problème : sur la ligne suivante, Visual Studio ne compile en m'indiquant une erreur CS7036 indiquant une erreur de paramètre sur MesClients, que dois je faire ?

    clientsbdd.Add(new MesClients { firstname = Prénom, lastname = Nom });





    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2021 à 15:41:15

      Une raison pour utiliser cette antiquité de DataReader à la place d'un DataAdapter ou un ORM ?

      En utilisant des accolades {}, vous n'utilisez plus le constructeur à 2 paramètres mais celui sans paramètre, qui n'existe pas.

      Soit vous remplacez les accolades par des parenthèses pour utiliser le constructeur avec 2 paramètres, soit vous ajoutez un constructeur sans paramètre pour faire une initialisation des champs via accolades.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        5 juillet 2021 à 16:23:56

        C'est ainsi que j'avais trouvé la solution sur un tuto pour communiquer avec ma base de donnée MySQL, après, étant débutant, et malgré avoir suivi les tuto de Xamarin Forms de Microsoft, mon cas présent n'est disponible. Mais je suis tout disposé à suivre des conseils pas à pas.
        • Partager sur Facebook
        • Partager sur Twitter
          5 juillet 2021 à 17:28:04

          >j'avais trouvé la solution sur un tuto pour communiquer avec ma base de donnée MySQL

          Ouais, bin changez de tuto. Faire un truc avec un machin qui est obsolète dans la majorité des cas depuis 2002, en 2021, c'est comment dire...

          >Mais je suis tout disposé à suivre des conseils pas à pas.

          Bin, vous avez au moins testé l'une des 2 solutions que j'ai déjà proposées ?

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            7 juillet 2021 à 17:01:45

            Edit : 

            J'ai en effet modifié mon code et je m'approche du but, j'arrive enfin à afficher des données

            var data = new List<MesClients>();
                                while (Lire.Read())
                                {
                                    //string ID = Lire["id_customer"].ToString();
                                    string firstname = Lire["firstname"].ToString();
                                    string lastname = Lire["lastname"].ToString();
                                    data.Add(new MesClients(firstname, lastname));
            
                                }
                                clientsbdd.ItemsSource = data;

            Sauf que mes données ne sont pas lisibles comme on peut le voir sur la capture, donc j'ai encore un peu de boulot.



            -
            Edité par Ju Ch 7 juillet 2021 à 17:22:11

            • Partager sur Facebook
            • Partager sur Twitter
              7 juillet 2021 à 19:34:40

              Redéfinissez la méthode ToString de la classe "MesClients".

              P.S.: Nommage de la classe foireux, la classe ne contient qu'un client.

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                8 juillet 2021 à 10:10:33

                Ca y est, j'ai ma liste qui s'affiche avec les informations voulues, quand je change ma requête SQL, c'est pris en compte. Le seul truc que j'ai pas compris mais faut surement que je repotasse la doc Xamarin Forms, c'est pourquoi malgré les deux x:strings de ma ListView, toutes les données ne s'affichent que sur 1 seule ligne.

                <ListView x:Name="clientsbdd">
                            <ListView.ItemsSource>
                                <x:Array Type="{x:Type x:String}">
                                    <x:String>Prenom</x:String>
                                    <x:String>Nom</x:String>
                                </x:Array>
                            </ListView.ItemsSource>
                        </ListView>

                En tout cas, merci pour votre aide, ca me fait déjà une bonne base pour continuer et complexifier le projet.

                -
                Edité par Ju Ch 8 juillet 2021 à 12:23:09

                • Partager sur Facebook
                • Partager sur Twitter

                Affichage de la ListView

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown