如何根据其他下拉列表将数据传输到DropDownList?

时间:2018-02-05 20:28:00

标签: asp.net-mvc

我在数据库上有一个表(dept),字段是:

1 - id
2 - Division
3 - Designation

我正在检索下拉列表中的division数据,这是我的代码:

public JsonResult GetDivision()
    {
        var division = db.Depts.GroupBy(x => x.Division)
                       .Select(x => x.FirstOrDefault()).OrderBy(x => x).ToList();
        return Json(division);
    }

现在我想根据分部名称

获取第二个下拉列表上的指定数据
 public JsonResult GetDesignation(int StateId)
     {
         var department = db.Depts.Where(x => x.DeptId == StateId)
                          .OrderBy(x => x.Designation);
         return Json(department);
     }

Ajax代码:

 $(document).ready(function () {
             $('#division').change(function () {
                 $('#designation').empty();
                 $.ajax({
                     type: "POST",
                     url: "/Official/GetDesignation",
                     datatype: "Json",
                     data: { StateId: $('#division').val() },
                     success: function (data) {
                         $('#designation').append('<option value>--Select--</option>');
                         $.each(data, function (index, value) {
                                $('#designation').append('<option value="' + value.deptId + '">' + value.designation + '</option>');
                                            console.log(value);
                                });
                      }
               });
           });

HTML:

  @Html.DropDownList("division", new SelectList(string.Empty, "Value", "Text"), "--Select--", null)
  @Html.DropDownList("designation", new SelectList(string.Empty, "Value", "Text"), "--Select--", null)

当我从下拉列表中选择divison时,我只得到一个来自id的指定,但是我希望得到所有基于部门名称的指定exmaple我有这种类型的数据

id division               designation
1  CORPORATE AFFAIRS      Manager Corporate Affairs 
2  CORPORATE AFFAIRS      Manager BPR & PMO
3  CORPORATE AFFAIRS      Jr. Executive Corporate Governance

在第一次下拉列表中我得到一个“公司事务”,但当我选择“公司事务”时,我需要在第二次下拉列表中获得所有名称

1 个答案:

答案 0 :(得分:0)

好的,我认为您需要了解以下内容......

这一行:

Map

最后是在进行SQL查询,这会产生类似的结果:

   var department = db.Depts.Where(x => x.DeptId == StateId)                            
                   .OrderBy(x => x.Designation);

我假设DeptId是一个PRIMARY KEY,它是表上的一个唯一值,当你处理上面的查询时,它只会带来一个或零结果,具体取决于是否匹配。

我认为您应该更正从ajax POST传递的值,您可以使用:

   SELECT * FROM Depts WHERE DeptId = Something ORDER BY Designation

而不是:

data: { StateId: $('#division').text() } 

这样您将分区名称作为字符串传递,并按如下方式修改您的函数:

data: { StateId: $('#division').val() }