2010-08-27 17 views
13

Tengo un menú desplegable de ASP.NET que he rellenado mediante enlace de datos. Tengo el texto que coincide con el texto de la pantalla para el elemento de lista que quiero que se seleccione. Obviamente no puedo usar SelectedText (getter solamente) y no sé el índice, por lo que no puedo usar SelectedIndex. Yo actualmente estoy seleccionando el artículo por iteración a través de toda la lista, como se muestra a continuación:¿Cómo se puede establecer el elemento seleccionado en un menú desplegable de ASP.NET a través del texto en pantalla?

ASP:

<asp:DropDownList ID="ddItems" runat="server" /> 

Código:

ddItems.DataSource = myItemCollection; 
ddItems.DataTextField = "Name"; 
ddItems.DataValueField = "Id"; 

foreach (ListItem item in ddItems.Items) 
{ 
    if (item.Text == textToSelect) 
    { 
     item.Selected = true; 
    } 
} 

¿Hay una manera de hacer esto sin iteración a través de todas ¿Los artículos?

+0

Esto podría ser una simple pregunta/estúpida , pero soy bastante nuevo en los formularios web ASP. –

+2

definitivamente no es simple ni estúpido. @kbrimington tiene la respuesta correcta para ti. –

Respuesta

39

Usted puede tratar de:

ddItems.Items.FindByText("Hello, World!").Selected = true; 

O:

ddItems.SelectedValue = ddItems.Items.FindByText("Hello, World!").Value; 

Tenga en cuenta que, si no está seguro de que un elementos existe coincidan con su texto de la pantalla, puede que tenga que comprobar los resultados de FindByText() para null.

Tenga en cuenta que utilizo la primera aproximación en una lista de selección múltiple, como CheckBoxList para agregar una selección adicional. Utilizo el segundo enfoque para anular todas las selecciones.

+1

me ganaste. Yo uso la primera opción. –

+1

la verificación de referencia nula se debe usar en cualquiera de esas opciones. No puedes garantizar que el texto estará allí. –

+0

@rock: Gracias por su respuesta. Agregué una nota explicando cuándo elegiría una sobre la otra. – kbrimington

1

uso del método de la clase FindByTextListItemCollection, tales como:

ListItem itemToSelect = ddlItems.Items.FindByText("some text to match"); 

if(itemToSelect != null) 
{ 
    itemToSelect.Selected = true; 
} 
-1

Su trabajo bien ..

drplistcountry.SelectedIndex = 
drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--")); 

O

drplistcountry.ClearSelection(); 
drplistcountry.SelectedIndex = 
drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--")); 
Cuestiones relacionadas