Iam utilisant DataList
pour la première fois. Tout fonctionne bien et je suis capable de voir les données à l'écran. Je fais un usage de ce code dans le modèle d'article.
<asp:DataList ID="DataList1" runat="server">
<FooterTemplate>
</FooterTemplate>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"AA") %>
<%# DataBinder.Eval(Container.DataItem,"BB") %>
<%# DataBinder.Eval(Container.DataItem,"CC") %>
</ItemTemplate>
</asp:DataList>
C'est le DataTable
que je suis contraignant
DataTable dt = new DataTable();
dt.Columns.Add("AA");
dt.Columns.Add("BB");
dt.Columns.Add("CC");
dt.Rows.Add("1", "2", "3");
dt.Rows.Add("10", "20", "30");
dt.Rows.Add("100", "200", "300");
dt.Rows.Add("1000", "2000", "3000");
DataList1.DataSource = dt;
DataList1.DataBind();
Qu'est-ce que DataBinder.Eval(Container.DataItem,"ColumnName")
fait exactement? Merci d'avance
Argument 1: Container.DataItem
fait référence au datasource
qui est lié au conteneur actuel.
Argument 2: La propriété publique sur le DataItem
qui devrait être évaluée.
Ainsi, Eval utilise la réflexion pour évaluer la propriété publique sur le DataItem
.
ex:
Dans vous cas, il évalue la colonne BB
sur le DataTable
.
Les lignes suivantes seront exécutées autant de fois que le nombre de lignes dans la table.
<%# DataBinder.Eval(Container.DataItem,"AA") %>
<%# DataBinder.Eval(Container.DataItem,"BB") %>
<%# DataBinder.Eval(Container.DataItem,"CC") %>
Chaque fois conteneur.datraitem aura la correspondance DataRowview des lignes dans le jeu de données.
Que se passe-t-il dans l'article est similaire à ce code.
DataView dataView = new DataView(dt);
foreach (DataRowView dataRow in dataView)
{
System.Diagnostics.Debug.WriteLine(DataBinder.Eval(dataRow,"AA").ToString());
System.Diagnostics.Debug.WriteLine(DataBinder.Eval(dataRow,"BB").ToString());
System.Diagnostics.Debug.WriteLine(DataBinder.Eval(dataRow,"CC").ToString());
}
Et la sortie obtenue sera
1 2 3 10 20 30 100 200 300 1000 2000 3000