2013-10-29 34 views
0

我正在使用MVC,並試圖通過兩個下拉列表過濾數據。嘗試使用兩個下拉列表進行過濾

我有一個工作,只是不知道該邏輯得到第二個工作

這裏是我的代碼:

控制器:

public ActionResult Index(int? DepartmentID, int? JobTitleID) 
    { 
     DepartmentDropDownList(); 
     JobDropDownList(); 
     var employees = db.Employees.Include(e => e.Department).Include(e => e.JobTitle); 

     if (DepartmentID.HasValue || JobTitleID.HasValue) 
     { 
      employees = employees.Where(j => j.JobTitleID == JobTitleID); 
      //somehow filter departments here 
     } 
     return View(employees.ToList()); 
    } 

查看:

@model IEnumerable<josh_MVC_Company.Models.Employee> 

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 
@using (Html.BeginForm()) 
{ 
    <p> Select by Department: @Html.DropDownList("DepartmentID", "Departments") </p> 

    <p> Select by Job Title: @Html.DropDownList("JobTitleID","Job Titles") </p> 
     <input type="submit" value="Filter" /> 
} 
+0

你是什麼意思「試圖過濾通過兩個dropdownlists數據」?正試圖在下拉列表中顯示部門和工作列表? – Spock

+0

在這裏看到我的答案http://stackoverflow.com/questions/17691882/how-to-popup-dropdownlistbox-on-selectedindex-changed-event-of-another-dropdownl/19104800#19104800 –

+0

我需要通過兩個過濾數據dropdownlists –

回答

1

在實現LINQ查詢之前,您必須按兩個字段進行篩選(ToList())。

if (JobTitleID.HasValue) 
    { 
     employees = employees.Where(j => j.JobTitleID == JobTitleID.Value); 
    } 

if (DepartmentID.HasValue) 
    { 
     employees = employees.Where(j => j.DepartmentID == DepartmentID.Value); 
    } 
return View(employees.ToList()); 

這樣,如果沒有任何值存在,它根本不會被過濾。

(正如你可以看到你可以鏈,你想多Where(Expression<Func<T,bool>>)

+0

簡直不敢相信那麼簡單。我一直在想 –