Associazione dati di un controllo List o SelectionList

I controlli mobili ASP.NET List e SelectionList consentono di eseguire il rendering di una visualizzazione di base dei dati e garantiscono l'interazione di base con gli elementi dei dati.

Un controllo mobile List o SelectionList può presentare un'associazione dati con un elemento DataView o DataSet. Per associare i dati di un controllo mobile List o SelectionList a un elemento DataView, è possibile impostare la proprietà DataSource e chiamare il metodo DataBind per eseguire l'associazione dati. Se, ad esempio, è presente un elemento DataSet con una tabella denominata Titles, è possibile utilizzare le istruzioni riportate di seguito.

myList.DataSource = ds.Tables["Titles"].DefaultView;
myList.DataBind();

In alternativa, per associare i dati direttamente a un elemento DataSet, è necessario impostare la proprietà DataMember sul nome della tabella. L'esempio che segue equivale a quello precedente.

myList.DataSource = ds;
myList.DataMember = "Titles";
myList.DataBind();

Un elemento di elenco di un controllo List o SelectionList può essere di norma associato a due proprietà da ciascun elemento di dati. La prima diventa la proprietà Text dell'elemento in questione, mentre la seconda diventa la proprietà Value. Questi valori vengono impostati mediante le proprietà DataTextField (DataTextField) e DataValueField (DataValueField) del controllo List (SelectionList). Il controllo List consente di eseguire il rendering di ciascun elemento utilizzando la proprietà Text. Se, ad esempio, si desidera eseguire il rendering di ciascun elemento in base alla relativa proprietà CustomerName, impostare la proprietà DataTextField su CustomerName.

Talvolta è opportuno eseguire il rendering di ciascun elemento come un riepilogo composto da alcune delle relative proprietà. A questo scopo, è possibile eseguire l'override dell'evento ItemDataBind o ItemDataBind, rispettivamente del controllo List e SelectionList, e impostare la proprietà Text. L'esempio che segue viene utilizzato per eseguire il rendering di un libro come combinazione di titolo e prezzo.

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"));
}

Sui dispositivi in cui è supportato il rendering avanzato, è possibile servirsi di un insieme di modelli relativi al controllo List per mostrare una visualizzazione personalizzata di un elemento di dati. Nella modalità basata sui modelli, il controllo List funziona in maniera simile al controllo server ASP.NET Repeater. È possibile, ad esempio, utilizzare il modello di elementi che segue per mostrare una visualizzazione dettagliata di un libro.

<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}") %>
      </td>
   </tr>
</ ItemTemplate >

Per ulteriori informazioni sugli insiemi di modelli, vedere la documentazione Insiemi di modelli e controlli basati su modelli.

Associazione dati dei modelli List o SelectionList

È possibile definire un modello nel controllo List o SelectionList per personalizzare il controllo. Per utilizzare l'associazione dati inline in questi modelli, avvalersi di uno dei seguenti esempi:

<%# DataBinder.Eval(((MobileListItem)Container).DataItem, "fieldname") %>

Oppure

<%#((MobileListItem)Container).Text%>
<%#((MobileListItem)Container).Value%>

Vedere anche

Accesso ai dati mediante i controlli elenco | Differenze tra le classi SelectionList e List