Bonjour,
j'ai une IList, et j'aimerais en retirer un DataTable.
j'ai trouvé une méthode sur le net, mais qui ne fonctionne pas.
Pouvez vous m'aider à trouver ca?
merci![]()
Bonjour,
j'ai une IList, et j'aimerais en retirer un DataTable.
j'ai trouvé une méthode sur le net, mais qui ne fonctionne pas.
Pouvez vous m'aider à trouver ca?
merci![]()
ca dépend de ce qu'il y a dans ton ilist mais normalement y a pas de probleme ...
si ton Ilist contient des objet "Chien" avec comme champ "nom" et "race" tu fais (ecris un peu à l'arrache mais c'est l'algorithmique qui compte):
et dans ton fichier aspx :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mydatalist.datasource = myilistdechien; mydatalist.databind();
Code : Sélectionner tout - Visualiser dans une fenêtre à part Eval("nom") .... Eval("race")
j'ai pas bien pigé.
je voudrais simplement un,e méthode qui prend une IList et qui me rend un DataTable
une méthode dans ce genre ci:
mais ca me sort des suite de caractères bizarre...
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 /// <summary> /// Transfrom Generic List to DataTable /// </summary> /// <param name="list">Generic List of objects</param> /// <param name="name">Name of the DataTable to be generated</param> /// <returns>DataTable containing objects from the Generic list</returns> public static DataTable TransformIListToDataTable(IList list, String name) { if (list == null) { return null; } DataTable dt = new DataTable(name); BinaryFormatter bin = new BinaryFormatter(); System.IO.MemoryStream mem = new System.IO.MemoryStream(); String str = ""; dt.Columns.Add(); foreach (object obj in list) { mem = new System.IO.MemoryStream(); bin.Serialize(mem, obj); str = Convert.ToBase64String(mem.ToArray()); dt.Rows.Add(str); mem.Close(); } return (dt); }
Que dois je modifier à la méthode pour que cela ne le fasse pas?
Pour ce cas ci je pourrais me contenter d'une méthode adaptée mais je vais de toute facon devoir réussir à trouver une méthode plus générique car j'aurai d'autres transformations d'IList à faire plus tard.
En fait, si tu veux une méthode générique, il va falloir regarder du côté de la "Réflection" du langage pour pouvoir connaître les propriétés exposées par les objets de ton IList.
Sinon, actuellement, tu peux procéder comme 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 DataTable _dt = new DataTable(); _dt.Columns.Add(new DataColumn("Nom_Colonne1"); _dt.Columns.Add(new DataColumn("Nom_Colonne2"); _dt.Columns.Add(new DataColumn("Nom_Colonne3"); foreach (object _monObjet in MaList) { DataRow _dr = _dt.NewRow(); _dr["Nom_Colonne1"] = _monObjet.Propriete1; _dr["Nom_Colonne2"] = _monObjet.Propriete2; _dt.Rows.Add(_dr); }
Partager