ASP.NET C # - Come posso impostare una proprietà pubblica per un CheckBoxList all'interno di un UserControl?

StackOverflow https://stackoverflow.com/questions/1639607

Domanda

Ho problemi a capirlo. Se ho un elenco di controllo all'interno di un controllo utente, come posso scorrere (o controllare davvero) quali caselle sono selezionate nell'elenco?

Come ho detto nel commento qui sotto, vorrei esporre gli elementi selezionati tramite una proprietà nel controllo stesso.

È stato utile?

Soluzione

Dalla tua pagina puoi farlo

var checkboxes = (CheckBoxList)userControl1.FindControl("checkBoxList1");

Ma una soluzione migliore nella mia mente sarebbe quella di esporre gli elementi selezionati tramite una proprietà o un metodo.

Nel controllo utente

public string[] CheckedItems {
    get {
        List<string> checkedItems = new List<string>();
        foreach (ListItem item in checkbox1.Items)
            checkedItems.Add(item.Value);

        return checkedItems.ToArray();
    }
}

Quindi nella pagina

var checkedItems = userControl1.CheckedItems; 

Potresti anche restituire checkbox1.Items nella proprietà, ma non è un buon incapsulamento.

Altri suggerimenti

Se si utilizza .net 3.5, è possibile creare una proprietà di sola lettura che utilizza LINQ per restituire un IList dei soli valori selezionati:

  public IList<string> SelectedItems{
       get {
          return checkbox1.Items.Cast<ListItem>.Where(i => i.Selected).Select(j => j.Value).ToList();
       }

    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top