【问题标题】:Kendo MVC Cascading Dropdownlist IssueKendo MVC 级联下拉列表问题
【发布时间】:2015-09-30 12:00:31
【问题描述】:

我正在使用Kendo UI ASP.NET MVC,我想使用它做一个级联下拉列表。我在第三个下拉列表中遇到问题,它显示数据库中的所有值,而不是第二个下拉列表中选择的 id 值。

我的控制器代码:-

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>

我正在使用 Kendo UI ASP MVC 下拉列表 - 第三个下拉列表显示表中的所有值 - ID 未获取。我不知道为什么会这样。有什么解决办法吗?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 kendo-asp.net-mvc cascadingdropdown


    【解决方案1】:

    您的FilterMovies 函数中有错误。您想按所选员工过滤电影,因此功能应如下所示(注意不同的属性名称Movies -> Employees,以及不同的$选择器"#FilterMovies" -> @987654325 @):

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

    希望这会有所帮助。

    【讨论】:

    • 非常感谢先生的帮助,它工作得非常完美..:) :)
    【解决方案2】:

    刚刚更改了视图中的第三个下拉列表:-

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2023-03-30
      • 2021-03-04
      • 1970-01-01
      相关资源
      最近更新 更多