Differenze tra le classi SelectionList e List

Sebbene entrambe le classi di controlli mobili ASP.NET abbiano una struttura molto simile, la differenza fondamentale consiste nelle funzionalità per lo sviluppatore in fase di progettazione ed esecuzione. Entrambe le classi gestiscono un insieme di elementi di elenco. Tuttavia, mentre la classe List deriva dalla classe PagedControl e, in ultima istanza, dalla classe MobileControl, il controllo SelectionList deriva direttamente dalla classe MobileControl e non prevede proprietà per la gestione dell'impaginazione, come ad esempio la proprietà ItemWeight.

La differenza principale tra le classi consiste nel fatto che la classe SelectionList gestisce la selezione di uno o più elementi selezionati. La proprietà SelectType contiene il valore enumerato ListSelectType, che determina se SelectionList si trovi in modalità di selezione singola o multipla. Nel caso della classe List, è possibile scegliere solo singoli elementi di un elenco, mentre la classe SelectionList garantisce un'ampia gamma di tipi enumerati da cui è possibile effettuare una scelta: CheckBox, DropDown, ListBox, MultiSelectListBox e Radio.

Funzionalità di SelectionList

Il controllo si trova in modalità di selezione singola se la proprietà SelectType viene impostata sui seguenti tipi:

  • DropDown
  • ListBox
  • Radio

Per recuperare l'elemento selezionato mentre è attiva la modalità di selezione singola, utilizzare le proprietà SelectedIndex e Selection.

I valori enumerati CheckBox e MulitSelectListBox indicano la modalità di selezione multipla. Per recuperare un elemento selezionato, eseguire una query sulla proprietà selezionata di ciascun elemento.

Gestione della selezione

Se l'elenco è complesso, ad esempio una matrice di oggetti, non è possibile accedere direttamente ai membri dell'elemento selezionato tramite la selezione. Tuttavia, se l'applicazione viene progettata correttamente, è possibile accedere all'oggetto associato. Se si sta creando un gruppo di oggetti per compilare l'elenco, rendere il gruppo una matrice globale e, quindi, gestire il valore restituito come un indice della matrice, come illustrato di seguito.

Person[] customers = new Person[3] {
    new Person("George Washington",  "George", "GW"), 
    new Person("Abraham Lincoln",    "Abe",    "AL"),
    new Person("Theodore Roosevelt", "Teddy",  "TR")
};

class Person
{
    private String _Name, _Nickname, _Initials;

    public Person(String name, String nickname, String initials)
    {
        this._Name     = name;
        this._Nickname = nickname;
        this._Initials = initials;
    }

    public String Name     { get { return _Name;     } }
    public String Nickname { get { return _Nickname; } }
    public String Initials { get { return _Initials; } }
}

private void Page_Load(object sender, System.EventArgs e)
{
    if(!IsPostBack)
    {
        // Bind the array to the list.
        SelectionList1.DataSource     = customers;
        // Display the name to the user.
        SelectionList1.DataTextField  = "Name";
        SelectionList1.DataBind();

        // Set the SelectType.
        SelectionList1.SelectType = 
            System.Web.UI.MobileControls.ListSelectType.CheckBox;
    }

}

private void Command1_Click(object sender, System.EventArgs e)
{
    if(SelectionList1.Selection == null)
    {
        Label2.Text = "You did not select a person";
    }
    else
    {
        Person selectedPerson = customers[SelectionList1.SelectedIndex];

        Label2.Text = selectedPerson.Name 
            + " (aka " + selectedPerson.Nickname + "),"
            + " initials " + selectedPerson.Initials;
    }
}

Aggiunta di elementi a un elenco

Un controllo List contiene un insieme di elementi nella classe MobileListItem. Esistono diversi modi per inserire elementi in un controllo List:

  • È possibile dichiarare elementi statici <Item> all'interno di un elenco. Ciascun elemento <Item> diventa un elemento dell'elenco e le relative proprietà vengono impostate avvalendosi degli attributi dell'elemento <Item>.
  • È possibile aggiungere elementi all'elenco a livello di codice, utilizzando l'insieme Items del controllo. È possibile creare una classe MobileListItem e aggiungerla all'insieme prima di eseguire il rendering.
  • È possibile associare i dati di un controllo List a un insieme (un oggetto che consenta di implementare ICollection o IListSource).

Vedere anche

Accesso ai dati mediante i controlli elenco | List | ObjectList | Accesso ai dati tramite ASP.NET | Accesso ai dati tramite ADO.NET | Inserimento di dati in un database SQL | Sviluppo di applicazioni Web mobili | Guida per gli sviluppatori di applicazioni