2012-03-21 16 views
7

Ho più elenchi a discesa per lo stesso elenco di selezione in look e desidero impostare l'elemento a discesa selezionato come per ciclo.Imposta elemento a discesa selezionato MVC

Come è possibile impostare una voce specifica dell'elenco a discesa selezionata nell'elenco a discesa mvc.

Per favore aiuto.

risposta

8

Il metodo Html.DropDownList accetta più parametri, uno dei quali è un List<SelectListItem>. L'istanza individuale del SelectListItem è possibile impostare la proprietà Selected:

var item = new SelectListItem() { 

    Selected = /* condition */, 

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

alternativa:

creare una collezione SelectList che espone la proprietà SelectedValue:

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

Grazie, ho fatto sotto codice per impostare nel mio look per ogni lista. –

+0

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

+0

E? ! Spero che non li abbia impostati tutti su "true". Ciò vanificherebbe lo scopo di impostare la proprietà 'Selected' ... – xandercoded

2

Utilizzare l'helper ListBoxFor HTML.

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

Per creare l'elenco di elementi, è possibile utilizzare MultiSelectList. Ad esempio, nel controller:

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(); 
} 

Quindi secondo lei:

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

Grazie a te ..:) –

0

metodo MVC per legare elenco personalizzato per DropDownList e selezionare la voce in modo dinamico se avete bisogno di ulteriori dettagli, commento qui sotto

Crea sezione

@{ 
    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> 

Sezione EDIT

 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()); 
Problemi correlati