2012-03-21 24 views
7

Tengo varias listas desplegables para la misma lista de selección en el aspecto y quiero configurar el elemento desplegable seleccionado como por ciclo.Establecer el elemento desplegable seleccionado MVC

¿Cómo puedo establecer un elemento específico de la lista desplegable seleccionada en la lista desplegable de mvc?

Por favor ayuda.

Respuesta

8

El método Html.DropDownList toma varios parámetros, uno de ellos es List<SelectListItem>. La instancia individual del SelectListItem es donde se establece la propiedad Selected:

var item = new SelectListItem() { 

    Selected = /* condition */, 

    Value = "Some Value", 
    Text = "Some Text" 
}; 

alternativa:

crear una colección SelectList que expone la propiedad SelectedValue:

Model.YourSelectList = new SelectList(items /* List<SelectListItem> */, 
             "Value", 
             "Text", 
             37 /* selected value */); 
+0

Gracias, hice el código a continuación para configurar en mi busqueda para cada lista. –

+0

@ { ViewData ["Sectors"] = new SelectList (Model.SectorList, "MainCategoryId", "CatName", "37"); } @ Html.DropDownList ("SectorId" + i, (IEnumerable ) ViewData ["Sectores"], "- Seleccionar -", nuevo {@class = "inputbox-small"}) –

+0

Y? ! Espero que no los hayas configurado todos como "verdaderos". Eso vencería el propósito de establecer la propiedad 'Seleccionado' ... – xandercoded

2

Utilice el ayudante de HTML ListBoxFor.

@Html.ListBoxFor(m => m.MyPropertyId, Model.MySelectList) 

Para crear la lista de elementos, puede usar la MultiSelectList. Por ejemplo, en el controlador:

public ActionResult Index() 
{ 
    // Get a collection of all product id's that should be selected. 
    int[] productIds = _service.GetSomeProductIds(); 

    // Make a new select list with multiple selected items. 
    ViewBag.List = new MultiSelectList(
     _service.Products, 
     "Id",     // Name of the value field 
     "Name",     // Name of the display text field 
     productIds);   // list of selected product ids 

    return View(); 
} 

A continuación, en su opinión:

@Html.ListBoxFor(m => m.ProductIds, (IEnumerable<SelectListItem>)ViewBag.List) 
+0

Gracias a ti ..:) –

0

método de MVC para unirse lista personalizada en DropDownList y seleccione el elemento de forma dinámica si necesita más detalles, comentario a continuación

Crear sección

@{ 
    List<SelectListItem> list = new List<SelectListItem>(); 
    list.Add(new SelectListItem { Text = "SALE", Value = "SAL" }); 
    list.Add(new SelectListItem { Text = "PURCHASE", Value = "PUR" }); 
} 

<div class="form-group"> 
    @Html.LabelFor(model => model.SaleOrPurchase, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10">   
     @Html.DropDownListFor(model => model.SaleOrPurchase, list, "-- Select Status --", new {@class= "form-control" }) 
     @Html.ValidationMessageFor(model => model.SaleOrPurchase, "", new { @class = "text-danger" }) 
    </div> 
</div> 

EDIT Sección

 List<SelectListItem> list = new List<SelectListItem>(); 
    list.Add(new SelectListItem { Text = "SALE", Value = "SAL" }); 
    list.Add(new SelectListItem { Text = "PURCHASE", Value = "PUR" }); 

    IEnumerable<SelectListItem> myCollection = list.AsEnumerable(); 

    ViewBag.SaleOrPurchase = new SelectList(myCollection, "Value", "Text", transactionTbl.SaleOrPurchase.ToString().Trim()); 
Cuestiones relacionadas