Liaison de données dans un contrôle List ou SelectionList
Mise à jour : novembre 2007
Les contrôles mobiles ASP.NET List et SelectionList affichent une vue élémentaire des données et permettent aux utilisateurs de sélectionner des éléments de données.
Vous pouvez lier un contrôle mobile List ou SelectionList à un objet DataView ou DataSet, ou à tout objet qui implémente IEnumerable ou IListSource. Pour lier un contrôle mobile List ou SelectionList à un objet DataView, définissez la propriété DataSource du contrôle et appelez sa méthode DataBind. L'exemple de code suivant montre comment lier un contrôle à un objet DataSet contenant une table nommée Titles.
myList.DataSource = ds.Tables["Titles"].DefaultView;
myList.DataBind();
Vous pouvez également lier un contrôle List ou SelectionList à un objet DataSet. Pour ce faire, affectez la propriété DataMember au nom de la table. L'exemple suivant équivaut au précédent.
myList.DataSource = ds;
myList.DataMember = "Titles";
myList.DataBind();
Un élément de liste dans un contrôle List ou SelectionList peut créer une liaison avec deux valeurs de données. Une valeur de données est liée à la propriété Text de l'élément de liste, et l'autre est liée à sa propriété Value. Vous configurez la liaison pour les éléments de liste en définissant les propriétés DataTextField (SelectionList.DataTextField) et DataValueField (SelectionList.DataValueField) du contrôle List ou SelectionList. Le contrôle List affiche chaque élément en fonction de sa propriété Text. Par exemple, si vous souhaitez afficher chaque élément en fonction de sa propriété CustomerName, affectez CustomerName à la propriété DataTextField.
Vous pouvez être amené à afficher chaque élément sous forme de résumé composé de plusieurs valeurs de données. Pour ce faire, vous pouvez gérer l'événement ItemDataBind du contrôle List ou l'événement ItemDataBind du contrôle SelectionList, et définir la propriété Text par programme. L'exemple de code suivant illustre le rendu des informations de livre sous forme d'une combinaison entre le titre et le prix correspondant.
private void List_OnItemDataBind(object sender,
ListDataBindEventArgs e)
{
e.ListItem.Text = String.Format ("{0} – {1}",
DataBinder.Eval (e.DataItem, "title"),
DataBinder.Eval (e.DataItem, "price", "{0:C}"));
}
Sur les périphériques qui prennent en charge un rendu plus élaboré, vous pouvez utiliser un ensemble de modèles pour votre contrôle List, afin d'afficher une vue personnalisée d'un élément de données. En mode d'utilisation avec des modèles, le contrôle List fonctionne de manière semblable au contrôle serveur ASP.NET Repeater. Par exemple, vous pouvez utiliser le modèle d'élément suivant pour afficher la vue détaillée d'un livre.
<ItemTemplate>
<tr style="background-color:FFECD8">
<td>
<%# DataBinder.Eval(((MobileListItem)Container).DataItem, _
"title") %>
</td>
<td>
<%# DataBinder.Eval(((MobileListItem)Container).DataItem, _
"title_id") %>
</td>
<td>
<%# DataBinder.Eval(((MobileListItem)Container).DataItem, _
"type") %>
</td>
<td>
<%# DataBinder.Eval(((MobileListItem)Container).DataItem, _
"pub_id") %>
</td>
<td>
<%# DataBinder.Eval(((MobileListItem)Container).DataItem, _
"price", "{0}", "{0:C}") %>
</td>
</tr>
</ ItemTemplate >
Pour plus d'informations sur les ensembles de modèles, consultez Ensembles de modèles et contrôles basés sur un modèle.