1

我正在使用Kendo UI ASP.NET MVC,我想使用它进行级联下拉列表。我在第三个下拉列表中显示问题,该列表显示了数据库中的所有值,而不是第二个下拉列表中选定的id值。Kendo MVC级联Dropdownlist问题

我的控制器代码: -

public ActionResult CDropdown() 
{ 
    return View(); 
} 
public JsonResult GetCascadeDept() 
{ 
    return Json(db.DeptData.Select(c => new { DepartmentID = c.DepartmentID, DepartmentName = c.DepartmentName }), JsonRequestBehavior.AllowGet); 
} 

public JsonResult GetCascadeEmployee(int? Departmets) 
{ 
    var empdata = db.EmpData.AsQueryable(); 
    if (Departmets != null) 
    { 
     empdata = empdata.Where(p => p.DepartmentID == Departmets); 
    } 
    return Json(empdata.Select(p => new { EmployeeID = p.EmployeeID, EmpName = p.EmpName }), JsonRequestBehavior.AllowGet); 
} 

public JsonResult GetCascadeMovies(int? Employees) 
{ 
    var d = from c in db.EmpMovies orderby c.MovieName select c; 
    var moviedata = db.EmpMovies.AsQueryable(); 
    if (Employees != null) 
    { 
     int cat = Convert.ToInt32(Employees); 
     moviedata = moviedata.Where(p => p.EmployeeID == Employees); 
    } 
    return Json(moviedata.Select(p => new { MovieId = p.MovieId, MovieName = p.MovieName }), JsonRequestBehavior.AllowGet); 
} 

我查看代码: -

<div> 
    <p> 
     <label for="Departmets">Department :- </label> 
     @(Html.Kendo().DropDownList() 
       .Name("Departmets") 
       .HtmlAttributes(new { style = "width:300px" }) 
       .OptionLabel("-- Select Department --") 
       .DataTextField("DepartmentName") 
       .DataValueField("DepartmentID") 
       .DataSource(source => 
       { 
        source.Read(read => 
        { 
         read.Action("GetCascadeDept", "Home"); 
         //.Data("FilterDepartmets"); 
        }) 
        .ServerFiltering(true); 
       }) 
       .SelectedIndex(0) 
     ) 
    </p> 
    <p> 
     <label for="Employees">Employee :- </label> 
     @(Html.Kendo().DropDownList() 
       .Name("Employees") 
       .HtmlAttributes(new { style = "width:300px" }) 
       .OptionLabel("-- Select Employee --") 
       .DataTextField("EmpName") 
       .DataValueField("EmployeeID") 
       .DataSource(source => 
       { 
        source.Read(read => 
        { 
         read.Action("GetCascadeEmployee", "Home") 
         .Data("FilterEmployees"); 
        }) 
        .ServerFiltering(true); 
       }) 
       .Enable(false) 
       .AutoBind(false) 
       .SelectedIndex(0) 
       .CascadeFrom("Departmets") 
     ) 
     <script type="text/javascript"> 
      function FilterEmployees() { 
       return { 
        Departmets: $("#Departmets").val() 
       }; 
      } 
     </script> 
    </p> 
    <p> 
     <label for="Movies">Movie Names :- </label> 
     @(Html.Kendo().DropDownList() 
       .Name("Movies") 
       .HtmlAttributes(new { style = "width:300px" }) 
       .OptionLabel("-- Select Movie --") 
       .DataTextField("MovieName") 
       .DataValueField("MovieId") 
       .DataSource(source => 
       { 
        source.Read(read => 
        { 
         read.Action("GetCascadeMovies", "Home") 
         .Data("FilterMovies"); 
        }) 
        .ServerFiltering(true); 
       }) 
       .Enable(false) 
       .AutoBind(false) 
       .SelectedIndex(0) 
       .CascadeFrom("Employees") 
     ) 

     <script type="text/javascript"> 
      function FilterMovies() { 
       return { 
        Movies: $("#FilterMovies").val() 
       }; 
      } 
     </script> 
    </p> 
</div> 

我使用的剑道UI ASP MVC下拉列表 - 第三下拉菜单可显示所有的表中的值 - 该ID没有得到。我不知道它为什么会发生。任何方案?

回答

0

您的FilterMovies功能有错误。您想在选定员工过滤电影这样的功能应该是如下(不同的属性名Movies - >Employees,和不同的$选择"#FilterMovies" - >"#Employees"):

function FilterMovies() { 
    return { 
     Employees: $("#Employees").val() 
    }; 
} 

希望这有助于。

+0

太感谢你了爵士它的作品绝对完美的帮助.. :) :) –

0

只是改变了第三届下拉列表中查看: -

<p> 
    <label for="Movies">Movie Names :- </label> 
    @(Html.Kendo().DropDownList() 
      .Name("Movies") 
      .HtmlAttributes(new { style = "width:300px" }) 
      .OptionLabel("-- Select Movie --") 
      .DataTextField("MovieName") 
      .DataValueField("MovieId") 
      .DataSource(source => 
      { 
       source.Read(read => 
       { 
        read.Action("GetCascadeMovies", "Home") 
        .Data("FilterMovies"); 
       }) 
       .ServerFiltering(true); 
      }) 
      .Enable(false) 
      .AutoBind(false) 
      .SelectedIndex(0) 
      .CascadeFrom("Employees") 
    ) 
    <script type="text/javascript"> 
     function FilterMovies() { 
      return { 
       Employees: $("#Employees").val() 
      }; 
     } 
    </script> 
</p>