2009-08-19 13 views
44

OK, od wielu godzin prowadzę Googleing, próbuję wszystkiego i nie mogę uzyskać niczego do pracy. Uczę się MVC używając Sharp Architecture i wygenerowałem kilka podstawowych formularzy do tworzenia obiektów Klienta. Chcę wypełnić listę rozwijaną stanu listą stanów USA i pozwolić użytkownikowi wybrać z tej listy. Jestem w stanie wypełnić listę i odzyskać wartość (aby zapisać klienta), ale kiedy idę do edycji klienta, aktualny stan klienta nie jest wybrany. Ustawiłem wybraną wartość w liście SelectList: To nie wydaje się być wystarczająco dobre. czego mi brakuje?Wypełnianie ASP.NET MVC DropDownList

+0

Proszę rozważyć zmianę tytułu pytania, aby był bardziej szczegółowy. –

+1

Co musiałem zrobić, to mieć stronę edycji, na której edytuję informacje (obiektu domeny), w tym przypadku obiekt klienta. kiedy go edytuję, potrzebowałem części stanu formularza do rozwinięcia z listą stanów (standardowych elementów), ale po zapełnieniu jej, gdy jestem w trybie edycji, potrzebuję jej do wybrania stanu aktualnie edytowalny obiekt. Zapełniłem listę rozwijaną, ale obecny stan nie został wybrany. kiedy ustawiam nazwę DropDownList (reprezentowaną tutaj przez lambdę) na Id stanu (wartość, której używam dla pola wartości z rozwijalnej listy), dobrze mi poszło. – leebrandt

Odpowiedz

78
<%= Html.DropDownListFor(c => c.Client.StateProvince.Id, 
           new SelectList(Model.StateProvinces, 
              "id", 
              "Name", 
              Model.Client.StateProvince), 
           "-- Select State --")%> 

To robi.

Mam nadzieję, że to pomoże komuś innemu.

~ Lee

+0

Masz rację, pierwszy parametr musi być tego samego typu, co poprzedni. Pracował też dla mnie! Dziękuję Ci. –

7

Sprawdziło się idealnie dla mnie thanx! Używałem go ustawić relację nadrzędny w podkategorii:

<%= Html.DropDownListFor(
model => model.Category.ParentId, 
new SelectList(Model.Categories, 
"CategoryId", 
"Name", 
    Model.Categories.Where(x => x.CategoryId == Model.Category.ParentId).Single()))%> 

Jeroen

2
<%= Html.DropDownListFor(c => c.Client.StateProvince, new SelectList(Model.StateProvinces, "Id", "Name")) %> 

i zastąpić toString() dla WojewództwoRegion wrócić Id, czyli:

return Id.ToString(); 

To działa, ale nie jest idealnym rozwiązaniem ...

Dennis

+0

To jedyne rozwiązanie, które mi pomogło! Dzięki! –

4

Zrobiłem to w ten sposób. Działa dobrze.

Controller

IFarmModelInterface service2 = new FarmModelRepository(); 
ViewData["Farms"] = new SelectList(service2.GetFarmNames(), "id", "FarmName", "XenApp"); 

Zobacz

<%: Html.DropDownListFor(m => m.Farm, (ViewData["Farms"] as SelectList)) %> 
3
public ActionResult AllUsers() 
{ 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    ViewBag.ListItems = listUsers; 
    //ViewBag.SelectedItem = 2; 
    return View(); 
} 

W AllUsers.cshtml

<p>@Html.DropDownList("ListItems")</p> 
0
public ActionResult AllUsers() { 
    List<Users> users = userRep.GetUsers(); 
    var listUsers = (from u in users.AsEnumerable() 
        select new SelectListItem 
        { 
         Text = u.UserName, 
         Value = u.UserId.ToString(), 
         Selected = (u.UserId==6) 
        }).AsEnumerable(); 
    // ViewBag.ListItems = listUsers; 
    ViewData["tempEmpList"]=listUsers; 
    return View(); } 

Wypełnienie rozwijane

@Html.DropDownList("SelectedEmployee", new SelectList((IEnumerable) ViewData["tempEmpList"], "Id", "Name"))

0

To View - MVC Controller

@Html.DropDownListFor(m => m.Entity, new ABC.Models.DropDownPopulate().MyMethod, new { @class = "form-control input-inline input-medium" }) 

myMethod Uzyskaj lista danych wiążą się z rozwijanej Korzystanie SelectListItems

public List<SelectListItem> MyMethod 
     { 
      get 
      { 
       List<SelectListItem> dropdownList = new List<SelectListItem>(); 
       var items = new DropDown_Bl().GetAll(); 
       foreach (var item in items) 
       { 
        SelectListItem dropdownItem = new SelectListItem(); 
        dropdownItem.Value = item.RnID.ToString(); 
        dropdownItem.Text = item.Description; 
        dropdownList.Add(dropdownItem); 
       } 
       dropdownList.Insert(0, new SelectListItem() { Text = "Please Select", Value = "", Selected = true }); 
       return dropdownList; 
      } 
     } 

GETALL Method W Dropdown_Bl - Używane do pobierania danych z bazy danych

public List<My_Table> GetAll() 
     { 
      var Items = _Context.MyRepository.GetMany(q => q.Area == "ASD").ToList(); 
      return Items ; 
     } 
Powiązane problemy