Domanda

Ho una visualizzazione elenco. Nella mia lista ho una casella a discesa che desidero compilare il mio codice dietro la pagina. L'unica cosa è che non so come accedere a questo controllo web. Quanto segue non funziona:

DropDownList ddl = (DropDownList)lvUserOverview.Controls[0];

So che l'indice è 0 perché l'elenco a discesa è l'unico controllo nella visualizzazione elenco (anche quando provo l'indice 1 ottengo un indice fuori dall'eccezione dell'intervallo).

Qualcuno può dirmi come posso accedere all'elenco a discesa? Nella mia pagina dietro voglio aggiungere listitems.

Codice ASPX:

<asp:DropDownList ID="ddlRole" onload="ddlRole_Load" runat="server">
</asp:DropDownList>

Codebehind:

protected void ddlRole_Load(object sender, EventArgs e)
{
  DropDownList ddl = (DropDownList)lvUserOverview.FindControl("ddlRole");
  if (ddl != null)
  {
      foreach (Role role in roles)
          ddl.Items.Add(new ListItem(role.Description, role.Id.ToString()));
  }
}
È stato utile?

Soluzione

Per ottenere un handle per l'elenco a discesa all'interno del proprio gestore eventi Load, tutto ciò che devi fare è lanciare il mittente come DropDownList.

DropDownList ddlRole = sender as DropDownList;

Altri suggerimenti

Se questo viene riprodotto in un ListView, allora c'è la possibilità che vengano istanziate più DropDownList, ognuna otterrà un ID univoco e non sarai in grado di usare l'approccio di Matthew.

Potresti voler utilizzare l'evento ItemDataBound per accedere a e.Item.FindControl (" NameOfDropDownList ") che ti permetterà di iterare su ogni menu a discesa creato.

Se ne stai creando solo uno ... perché si trova in un ListView?

Prova questo:

DropDownList ddl = (DropDownList)lvUserOverview.FindControl("NameOfDropDownList");

Se i controlli sono associati ai dati, assicurarsi di provare ad accedere ai loro discendenti dopo l'associazione dei dati. Potrei anche aiutare a ispezionare gli oggetti nel debugger prima di quella riga.

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