[WPF] afficher DataSet dans une ListView

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 26 avril 2010 à 10:32
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 7 mai 2010 à 10:38
Yop à tous,

Voila , je tente en vain d'afficher les résultat d'un dataset dans une listview WPF en C#. Le context est que la personne utilisant le programme tape une requête SQL dans un textbox, appuye sur Ok et la requête est envoyée au serveur. Bref je reçois bien les résultat et a partir de cela je veux construire la ma listView . Je crée d'abord les colonnes et ensuite je veux juste placer les valeurs contenues dans le dataset dans ma listview. Voici le code de la fonction :
private void DisplayInListView(SqlDataReader drData)
        {
            GridView gvView = new GridView();
            GridViewColumn gvcNew;
            ListViewItem itNew;
            String[] rowValue = new String[3];
            
            // Création des colonnes :
            for (int i = 0; i < drData.FieldCount; i++)
            {
                gvcNew = new GridViewColumn();
                gvcNew.Header = drData.GetName(i);
                gvView.Columns.Add(gvcNew);
            }

            lvData.View = gvView;

            while (drData.Read())
            {
                for (int i = 0; i < drData.FieldCount; i++)
                {
                  // Je ne vois pas comment faire :s
                   rowValue[i] =  drData.GetValue(i).ToString();
                }
                itNew = new ListViewItem();
                itNew.Content = rowValue;
                lvData.Items.Add(itNew);
            }
        }


J'ai esseyé avec lvData.Items.Add(maString); cela fonctionnai mais avec chaque fois toutes les valeur par colone, donc il ne sépare pas les valeur du dataset pour les mettre dans chaque colonnes. C'est surtout ça qui me pose problème. j'arrive a ajouté un item, mais l'ennuie c'est que je ne vois pas comment affiché les données chaqu'une dans la colonne qui lui ai destinée.

Merci d'avance.

++
deck_bsd
___________________________________
http://deck-bsd.eurower.net

4 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
26 avril 2010 à 13:57
Bonjour,
Va voir le data binding sur ce site:
http://www.wpftutorial.net/


louis
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 avril 2010 à 15:15
Yop,

le binding ici n'est pas la solution étant donné que l'on ne sait pas à l'avance combien de colones ,leurs nom et combiens de tuples vont être présent dans le datareader. Deplus avec le binding les liens ce font via des propriété hors pour récupérer les valeurs d'un datareader c'est via l'appel de fonction GetValue(i). Donc le binding ne va clairement pas :) mais merci quand mm.

En fait pour reformuler la question plus simplement, comment avec un ListViewItem , remplir les colonnes avec des données différentes. Car si on fait un malistview.items.add(lvitem); il affiche le content du ListViewitem dans les 3 colones hors ce n'est pas du tout ce que je veux :s

++
deck_bsd
___________________________________
http://deck-bsd.eurower.net
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
26 avril 2010 à 15:58
As-tu lu cette page :
http://www.wpftutorial.net/DataGrid.html
et voilà ce qu'on trouve dans MSDN :
GridView myGridView = new GridView();
myGridView.AllowsColumnReorder = true;
myGridView.ColumnHeaderToolTip = "Employee Information";

GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
myGridView.Columns.Add(gvc1);
GridViewColumn gvc2 = new GridViewColumn();
gvc2.DisplayMemberBinding = new Binding("LastName");
gvc2.Header = "Last Name";
gvc2.Width = 100;
myGridView.Columns.Add(gvc2);
GridViewColumn gvc3 = new GridViewColumn();
gvc3.DisplayMemberBinding = new Binding("EmployeeNumber");
gvc3.Header = "Employee No.";
gvc3.Width = 100;
myGridView.Columns.Add(gvc3);

En espérant que tu trouveras ton bonheur.

louis
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
7 mai 2010 à 10:38
Yop,

Désolé du retard.

Malheureusement ce contrôle n'est disponible qu'en 4.0, hors je boss en 3.5 mais merci quand même pour ton aide.

++

deck_bsd

______________________________________________________
http://deck-bsd.eurower.net
0
Rejoignez-nous