2012-06-11 16 views
31

Quiero establecer el elemento seleccionado para asp. net lista desplegable de control programáticamente.¿Cómo establecer un elemento de lista desplegable como seleccionado en ASP.NET?

Así que quiero pasar un valor al control de lista desplegable para establecer el elemento seleccionado donde el valor del elemento es igual al valor pasado.

+1

Y cuál es el problema/pregunta? –

+0

muestra un código @farouk, entonces intentaremos ayudarte ... –

+0

problema resuelto gracias – farouk

Respuesta

50
dropdownlist.ClearSelection(); //making sure the previous selection has been cleared 
dropdownlist.Items.FindByValue(value).Selected = true; 
+0

Pero el problema con esto es que tiene que envolverlo en una comprobación de error como Try() o una prueba ListItem. Si el "valor" tiene un valor que no existe en la lista desplegable, obtendrá una excepción (error de objeto no encontrado, creo). – Fandango68

+1

Algo necroing el hilo, pero esto no funciona para mí. ¿Alguna solución nueva tal vez? – gadria

+0

@gadria. parece que te falta el valor en el menú desplegable que estás tratando de encontrar a través de 'FindByValue' – Rab

26

Puede establecer SelectedValue en el valor que desea seleccionar. Si ya ha seleccionado el artículo, debe borrar la selección; de lo contrario, obtendría el error "Cannot have multiple items selected in a DropDownList".

dropdownlist.ClearSelection(); 
dropdownlist.SelectedValue = value; 

También puede utilizar ListItemCollection.FindByText o ListItemCollection.FindByValue

dropdownlist.ClearSelection(); 
dropdownlist.Items.FindByValue(value).Selected = true; 

Utilice el método FindByValue a buscar en la colección de ListItem con una propiedad de valor que contiene el valor especificado por el parámetro de valor . Este método realiza una comparación insensible a mayúsculas y minúsculas de . Este método no hace búsquedas parciales o búsquedas con comodines. Si no se encuentra un artículo en la colección usando este criterio, se devuelve nulo, MSDN.

Si espera que usted puede estar buscando para el texto/valor que suele estar presente en DropDownList colección ListItem entonces usted debe comprobar si se obtiene el objeto ListItem o null de FindByTextFindByValue o antes de acceder a la propiedad seleccionada. Si intenta acceder a Seleccionado cuando se devuelve nulo, obtendrá NullReferenceException.

ListItem listItem = dropdownlist.Items.FindByValue(value); 

if(listItem != null) 
{ 
    dropdownlist.ClearSelection(); 
    listItem.Selected = true; 
} 
+1

Solución mencionada no funcionó para mí, pero esta como un encanto – eka808

+2

¿Por qué otras soluciones no funcionó? –

+1

@ eka808 ¿Podría profundizar en su comentario según la pregunta de Yosi? – TylerH

0

Este es un ejemplo muy agradable y limpio: (marque este gran tutorial para una explicación completa link)

public static IEnumerable<SelectListItem> ToSelectListItems(
       this IEnumerable<Album> albums, int selectedId) 
{ 
    return 
     albums.OrderBy(album => album.Name) 
       .Select(album => 
        new SelectListItem 
        { 
        Selected = (album.ID == selectedId), 
        Text = album.Name, 
        Value = album.ID.ToString() 
        }); 
} 

En este MSDN link se puede leer de DropDownList documentación del método.

Espero que ayude.

23

Puede utilizar el método FindByValue para buscar en DropDownList un elemento con un valor que coincida con el parámetro.

dropdownlist.ClearSelection(); 
dropdownlist.Items.FindByValue(value).Selected = true; 

Alternativamente, puede utilizar el método FindByText para buscar el DropDownList de un elemento con el texto coincide con el parámetro.

Antes de utilizar el método FindByValue, no olvide restablecer DropDownList para que no se seleccionen elementos con el método ClearSelection(). Borra la selección de lista y establece la propiedad Seleccionado de todos los elementos en falso. De lo contrario, obtendrá la siguiente excepción.

"Cannot have multiple items selected in a DropDownList" 
-3

Establecer propiedad desplegable

selected="true" 
Cuestiones relacionadas