[WPF] afficher DataSet dans une ListView

Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
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

Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour,
Va voir le data binding sur ce site:
http://www.wpftutorial.net/


louis
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
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
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
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
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
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