2009-12-14 15 views
7

abajo de mi DropDownList se rellena a partir de la base de datos como en:Adición de un elemento de selección en blanco a la lista en la caída de lista

dt DataTable = GetData(); ddlMylist.DataSource = dt; ddlMylist.DataBind();

Ahora dt contiene los datos, y deseo agregar la palabra "Seleccionar" a la parte superior de la lista cuando la selección está en blanco. Parece que no hay otra opción que no sea agregarlo al dt (objeto DataTable) ... pero de alguna manera parece estar mal.

¿Cuáles son las otras opciones. No tiene que ser la palabra "Seleccionar", puede ser solo un espacio vacío ... Actualmente, al cargar la página, puedo ver el primer elemento de datos en la lista, que está muy bien y muy bien, pero tengo 3 menús desplegables que son codependientes, y quiero que el usuario haga una selección explícita que activará otros menús desplegables en consecuencia.

Respuesta

11

Probar:

ddlMylist.Items.Insert(0, new ListItem([key], [text])); 
ddlMylist.SelectedIndex = 0; 

Esto se hace después de que databind a su fuente.

+1

por ejemplo ... nuevo ListItem (String.Empty, "--Select--") – MikeW

+2

o simplemente ddlMyList.Items.Insert (0, new ListItem()); –

0

Probar:

DDL.Text = string.Empty; 

Editar:

Sé que esto funciona cuando estoy añadiendo manualmente los elementos, pero no estoy seguro de si lo hará cuando una fuente de datos está obligado.

+0

no funciona. Tenga en cuenta que estoy usando DropDownList no control de cuadro combinado. Después de enlazar esto se ignora y antes de enlazar, me sale un error que dice que el espacio vacío no está en la lista de datos (que es verdadero) – sarsnake

+0

Ya no lo vi al principio. Perdón por llevarte por el camino equivocado. –

+0

no te preocupes :) no creo que sea realmente el control - probablemente sea como dijiste porque utilizo DataBind() – sarsnake

8

su margen de beneficio del dropdownlist debería tener este aspecto:

<asp:DropDownList ID="ddlMylist" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Text="-Select-" Value="" /> 
</asp:DropDownList> 

Nota atributo AppendDataBoundItems.

+0

Resulta que ahora, cada vez que el desplegable se recupera, los elementos se anexan, que no es lo que yo querer. Solo quiero agregar "Seleccionar" a la parte superior de la lista, eso es todo. Esta lista depende de otra selección, por lo que su contenido debe cambiar, no agregarse. Parece que se está añadiendo TODO EL TIEMPO o NUNCA con la lista desplegable. muy frustrante cuando una tarea tan pequeña requiere tanto trabajo. – sarsnake

+0

Está haciendo algo incorrecto con viewstate y luego mantener estos elementos. –

+0

no, según el blog de Scott Guthrie: Específicamente es una propiedad llamada "AppendDataBoundItems", y controla si los elementos dentro de una lista existente son reemplazados o anexados-a cuando el control está enlazado a datos (con ASP.NET 1.1 los elementos eran siempre reemplazado). http://weblogs.asp.net/scottgu/archive/2006/01/29/436804.aspx algo a tener en cuenta – sarsnake

2

prueba este:

ddlMylist.Items.Insert(0, "Select"); 
Cuestiones relacionadas