在下拉列表中从数据库中获取值我没有正常工作..我需要手动添加<option value='-1'>Root</option>
,这在数据库中不存在。
<div class="col-lg-4">
<fieldset class="form-group">
<label class="form-label" for="exampleInput">Domain Name</label>
@Html.DropDownList("DomainID", null, "--- Select Domain Name ---", new { @class = "select2-arrow" })
@Html.ValidationMessageFor(model => Model.DomainID, null, new { @style = "color: red" })
</fieldset>
</div>
<div class="col-lg-4">
<fieldset class="form-group">
<label class="form-label" for="exampleInput">Parent Module</label>
<select id="ParentModuleID" class="select2-arrow" name="ParentModuleID"></select>
@Html.ValidationMessageFor(model => Model.ParentModuleID, null, new { @style = "color: red" })
</fieldset>
</div>
Jquery的:
$("#DomainID").change(function () {
var id = $(this).val();
$("#ParentModuleID").empty();
$.get("ParentModule_Bind", { DomainID: id }, function (data) {
var v = "<option>--- Select Domain Name ---</option>";
$.each(data, function (i, v1) {
v += "<option value=" + v1.Value + ">" + v1.Text + "</option>";
});
$("#ParentModuleID").html(v);
});
});
在上面的jquery <option>--- Select Domain Name ---</option>
我需要添加value of -1
public JsonResult ParentModule_Bind(string DomainID)
{
userType type = new userType();
DataSet ds = type.ParentModule_Bind(DomainID);
List<SelectListItem> statelist = new List<SelectListItem>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
statelist.Add(new SelectListItem { Text = dr["ModuleName"].ToString(), Value = dr["ModuleID"].ToString() });
}
return Json(statelist, JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:0)
您可以像这样在jQuesry中添加一行
v += "<option value='-1'>root</option>";
或在foreach
之上的控制器中添加一行,如下所示
statelist.Add(new SelectListItem { Text = "root", Value = "-1" });
实现结果。
答案 1 :(得分:0)
为什么在使用jQuery的UI中有这些?
我看到的一个大问题是,您正在将列表数据的业务逻辑与UI操作混合在一起。
如果ParentModel列表始终需要此值而不管DomainID,那么我将修改您返回列表的方法
public JsonResult ParentModule_Bind(string DomainID)
{
userType type = new userType();
DataSet ds = type.ParentModule_Bind(DomainID);
//change the following line
var statelist = new List<SelectListItem> { new SelectListItem { Text = "Root", Value = "-1" };
foreach (DataRow dr in ds.Tables[0].Rows)
{
statelist.Add(new SelectListItem { Text = dr["ModuleName"].ToString(), Value = dr["ModuleID"].ToString() });
}
return Json(statelist, JsonRequestBehavior.AllowGet);
}