我在数据库上有一个表(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
在第一次下拉列表中我得到一个“公司事务”,但当我选择“公司事务”时,我需要在第二次下拉列表中获得所有名称
答案 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() }