我有三个下拉列表,每个都取决于先前的选择 (stocks ,category,items) 。每个下拉列表由控制器控制器中的 Viewbag 填充:
ViewBag.stock_id = new SelectList(db.stocks, "stock_id", "stock_name");
ViewBag.cat_id = new SelectList(db.categories, "cat_id", "cat_name");
ViewBag.item_id = new SelectList(db.items, "item_id", "item_name");
[HttpGet]
public ActionResult UpdateitemDrop1(int stock_id)
{
var fromDatabaseEF = new SelectList(db.categories.Where(x => x.stock_id == stock_id).ToList(), "cat_id", "cat_name");
SelectList vb = fromDatabaseEF;
return Json(vb, JsonRequestBehavior.AllowGet);
}
[HttpGet]
public ActionResult UpdateitemDrop2(int cat_id)
{
SelectList data= new SelectList(db.items.Where(x => x.cat_id == cat_id).ToList(), "item_id", "item_name");
return Json(data, JsonRequestBehavior.AllowGet);
}
看法:
<div class="form-group">
@Html.LabelFor(model => model.stock_id, "stock_id", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("stock_id", null, htmlAttributes: new { @class = "form-control", @id = "stock_id" })
@Html.ValidationMessageFor(model => model.employee_id, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.cat_id, "cat_id", htmlAttributes: new { @class = "control-label col-md-2"})
<div class="col-md-10">
@Html.DropDownList("cat_id", null, htmlAttributes: new { @class = "form-control", @id = "cat_id", disabled = "disabled" })
@Html.ValidationMessageFor(model => model.employee_id, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.item_id, "item_id", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("item_id", null, htmlAttributes: new { @class = "form-control", @id = "item_id" , disabled = "disabled" })
@Html.ValidationMessageFor(model => model.item_id, "", new { @class = "text-danger" })
</div>
</div>
<script>
$(function () {
$('#stock_id').change(function () {
var select = $('#cat_id');
var stockV = $("#stock_id :selected").val();
alert();
$.ajax({
url: '/additions/UpdateitemDrop1',
type: "GET",
dataType: "JSON",
data: { stock_id: stockV },
success: function (vb) {
select.empty();
$(vb).each(function () {
select.add($("<option></option>").val(vb.cat_id).html(vb.cat_name));
});
}
});
});
$('#cat_id').change(function () {
var catV = $("#cat_id :selected").val();
$('#item_id').prop("disabled", false);
alert();
$.ajax({
url: '/additions/UpdateitemDrop2',
type: "GET",
dataType: "JSON",
data: { item_id: catV },
success: function () {
$("#item_id").html("");
$("#item_id").empty();
$.each(data, function (i, items) {
$("#item_id").append(
$('<option></option>').val(items.item_id).html(items.item_name));
});
}
});
});
});
</script>
但是当我从第一个下拉列表(stock_id)中选择选项时,它会在“empty()”函数处停止并且不会填充第二个下拉列表有任何帮助吗?