我在c#ASP.Net上使用mvc2。我试图实现级联下拉列表,其中我的第一个下拉列表被命名为组,而我的第二个下拉列表是除法。所以在选择组时,它的各个部门将显示在我的第二个下拉列表中..
这是我试图实现的代码
这是我的观点部分。
<%= Html.DropDownList("ddlGroup", IEnumerable<SelectListItem>)ViewData["ddlGroup"])%>
<select id="ddlDivision" name="Division"></select>
,脚本部分是
$(document).ready(function () {
$("#ddlGroup").change(function () { // group drop down selected index change
LoadDivision($("#ddlGroup").val());
}).change(); // For 1st data in on load
});
function LoadDivision (Group) {
var url = "../Training/GetJsonDivision";
$.getJSON(url, { Group: Group }, function (data) {
$.each(data, function (index, optionData) {
$("#ddlDivision").append("<option value'" + optionData.Division + "'>" + optionData.Division + "</option">);
});
});
}
我的控制器部分是
public ActionResult GetJsonDivision(string Group)
{
SelectList division = new SelectList(GetDivision(Group), "Division", "Division");
return this.Json(division, JsonRequestBehavior.AllowGet);
}
这里我的GetJsonDivision返回给定组的除法集。 在我的jquery中,在getJSON函数调用中,它进入控制器并且方法被执行但是在每个语句之后,我无法将数据绑定到下拉列表。
任何人都可以帮助我解决这个问题。我不清楚我们在回调函数参数中给出的optionData是什么,以及它是如何映射到返回值的。
谢谢和问候 Malathy。
答案 0 :(得分:0)
当你直接插入文本时,我不相信你真正添加了一个新元素。例如,尝试这样的事情:
$(data).each(function()
{
var option = $('<option />');
option.val(this.Division).text(this.Division);
$('#ddlDivision').append(option);
});
试一下,看看它是否有效。