Pregunta

Tengo una vista de lista. En mi vista de lista tengo un cuadro desplegable que quiero completar en mi página de código detrás. Lo único es que no sé cómo acceder a este control web. Lo siguiente no funciona:

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

Sé que el índice es 0 porque la lista desplegable es el único control en la vista de lista (también cuando intento el índice 1 obtengo una excepción de índice fuera de rango).

¿Alguien puede decirme cómo puedo acceder a la lista desplegable? En mi página de atrás quiero agregar elementos de lista.

Código 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()));
  }
}
¿Fue útil?

Solución

Para obtener un identificador de la lista desplegable dentro de su propio controlador de eventos de carga, todo lo que debe hacer es convertir el remitente como DropDownList.

DropDownList ddlRole = sender as DropDownList;

Otros consejos

Si esto se procesa en un ListView, existe la posibilidad de que se creen instancias múltiples DropDownLists, cada una obtendrá una ID única y no podrá utilizar el enfoque de Matthew.

Es posible que desee utilizar el evento ItemDataBound para acceder a e.Item.FindControl (" NameOfDropDownList ") que le permitirá iterar en cada menú desplegable creado.

Si solo está creando uno ... ¿por qué está en ListView?

Prueba esto:

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

Si sus controles están vinculados a datos, asegúrese de intentar acceder a sus descendientes después del enlace de datos. También puedo ayudar a solo inspeccionar objetos en el depurador antes de esa línea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top