2017-12-18 9 views
-1

List<SelectListItem> 개체를 만드는 방법을 유지하는 주된 책임은 클래스입니다. 필요한 경우 여러보기에서 이러한 방법을 참조 할 수 있습니다.SelectList의 그룹 DropDownList에 표시되지 않음

나는 그룹화를 필요로 할 것입니다 생각 드롭 다운리스트를 가지고, 그래서 이런 짓을 :

내 컨트롤러에서
public static List<SelectListItem> lstPersonnel() 
{ 
    var lstPersonnel = new List<SelectListItem>(); 

    var lstActiveInstructors = db.InstructorSics.Where(x => x.Active).ToList(); 

    var lstTest = new List<GroupedCFI>(); 

    foreach (var person in lstActiveInstructors) 
    { 
     var emp = EmpData.GetEmp(person.InstrucSICIbm); 
     GroupedCFI cfi = new GroupedCFI() 
     { 
      Id = person.Id, 
      Name = $"{emp.FirstName} {emp.LastName}", 
      WorkLocation = $"{emp.Assignment} {emp.Section}" 
     }; 

     lstTest.Add(cfi); 
    } 

    var groups = lstTest.GroupBy(x => x.WorkLocation).ToList(); 

    foreach (var group in groups) 
    { 
     var slg = new SelectListGroup() {Name = group.Key}; 

     foreach (GroupedCFI item in group) 
     { 
      SelectListItem myItem = new SelectListItem() {Text = item.Name, Value = item.Id.ToString(), Group = slg}; 
      lstPersonnel.Add(myItem); 
     } 
    } 

    return lstPersonnel; 
} 

내가 가진이 : 내보기에서

ViewBag.InstrucSelect = new SelectList(SelectListMethods.lstPersonnel(), "Value", "Text", "Group", null, null); 

:

@Html.DropDownListFor(model => model.InstrucSICId, (IEnumerable<SelectListItem>)ViewBag.InstrucSelect, "-- Select --", new { @class = "form-control" }) 

실행하면 드롭 다운 목록에 모든 이름이 표시되지만 그룹화는 단지입니다. 0. Value, Text 값이 그룹화되지는 않지만 왜 작동합니까?

답변

0

나는 이것을 알아 냈습니다. 만약 내가하고있는 것처럼 새로운 SelectList 객체 내에서 그 메소드를 호출하려고한다면 어떤 이유로 그룹핑이 작동하지 않을 것이다.

하지만 난에서 내 컨트롤러에 라인을 변경 :

ViewBag.InstrucSelect = new SelectList(SelectListMethods.lstPersonnel(), "Value", "Text", "Group", null, null); 

사람 :

ViewBag.InstrucSelect = SelectListMethods.lstPersonnel(); 

그리고 지금은 작동합니다. 이 질문에 대한 답변 (질문이있는 질문에 대답)이지만 새 값의 SelectList 개체에서 IEnumerable 오버로드로 메서드를 호출 할 때 그룹화가 작동하지 않는 이유는 무엇입니까? 값 및 텍스트 값은 어떻게됩니까?