C# et .NET
578
Dans le cas d’un tableau où chaque cellule contient plusieurs champs (cas d’un tableau
d’objets), il faut initialiser les propriétés
DataSource
(pour le nom du tableau) et
Display-
Member
(pour le nom du champ) :
public class Pers
{
string nom;
int age;
public Pers(string N, int A) {nom = N; age = A;}
public string Nom {get {return nom;}}
}
.....
Pers[] tp = {new Pers("Gaston", 27), new Pers("Jeanne", 23),
new Pers("Prunelle", 35)};
.....
lbNoms.DataSource = tp;
lbNoms.DisplayMember = "Nom";
Comme chaque cellule du tableau
tp
contient plusieurs champs, la propriété
Display-
Member
de la boîte de liste sert à spécifier le champ à retenir pour l’insertion dans la boîte
de liste. Il doit s’agir d’une propriété de la classe.
Dans la propriété
DataSource
, nous aurions pu spécifier un objet conteneur de l’une des
classes étudiées au chapitre 4 (par exemple un tableau dynamique
ArrayList
).
Enfin, le contenu de la boîte de liste peut provenir d’une base de données. Par exemple du
champ
Nom
de la table
Pers
de la base de données
Biblio.mdb
(ici du répertoire courant de
l’application) :
using System.Data;
using System.Data.OleDb;
.....
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ "Data Source=Biblio.mdb";
string selStr = "SELECT Nom FROM Auteurs ";
OleDbDataAdapter oDA = new OleDbDataAdapter(selStr, connStr);
DataSet oDS = new DataSet();
oDA.Fill(oDS, "Noms");
lbNoms.DataSource = oDS.Tables[0];
lbNoms.DisplayMember = "Nom";
Dans une application ASP.NET, écrivez (généralement dans
Page_Load
, la fonction
MapPath
étant membre de la classe
Page
, voir le chapitre 28) :
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
+ MapPath("Biblio.mdb");