我是ASP.Net MVC和Linq的新手。我一直在关注如何填写下拉列表,从另一个ddl中选择一个值。
我从数据库获取数据并成功过滤但这些结果没有绑定或显示在ddl中。
我必须做一些基本的错误,但因为我的生活无法看到它是什么。以下是我到目前为止的情况。非常感谢。
我的第一个下拉列表是使用html帮助器正确填充 - 这是我在原始html中的第二个ddl
<select id="projectcode"></select>
同一视图的脚本部分中的Jquery
<script language="javascript" type="text/javascript">
$(function () {
$("#@Html.IdFor(model => model.CustomerCode)").change(function () {
$.getJSON("/IssueView/GetIssueList", { code: $("#@Html.IdFor(model => model.CustomerCode)").val() },
function (results) {
$("#projectcode").empty();
$.each(results, function (i, proj) {
$("#projectcode").append("" + proj.ProjectCode + "");
});
});
});
});
</script>
控制器操作
public ActionResult GetIssueList(string code)
{
//dynamic fill of project code dropdown on selection of customer code drop down
ProjectManager pm = new ProjectManager();
var projectcodes = pm.SelectAllProjects();
var test = projectcodes.Where(x => x.CustomerCode == code).ToList();
return Json(test);
}
ProjectManager代码
public List<Project> SelectAllProjects()
{
using (IssueViewContext context = new IssueViewContext())
{
return context.Projects.ToList();
}
}
我在包含过滤数据的操作中调试了变量test。这证明了从jquery脚本调用的操作。但是ddl没有填充这些数据 - 它是空的。
我也是堆叠溢出的新手,所以我希望我已经提供了所需的全部内容。感谢您的阅读
修改
我在没有调用的json返回后发出警告,因此它没有通过json调用。
然后我将脚本更改为
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#projectcode").prop("disabled", true);
$("#@Html.IdFor(model => model.CustomerCode)").change(function () {
if ($("#@Html.IdFor(model => model.CustomerCode)").val() != "Please select") {
var options = {};
options.url = "/IssueView/GetIssueList";
options.type = "POST";
options.data = JSON.stringify({ code: $("#@Html.IdFor(model => model.CustomerCode)").val() });
options.dataType = "json";
options.contentType = "application/json";
options.success = function (results) {
alert(results);
$("#projectcode").empty();
for (var i = 0; i < results.length; i++) {
//var proj = (string).results[i].val;
$("#projectcode").append("<option>" + results[i] + "</option>");
}
$("#projectcode").prop("disabled", false);
};
options.error = function () { alert("Error retrieving codes!"); };
$.ajax(options);
}
else {
$("#projectcode").empty();
$("#projectcode").prop("disabled", true);
}
});
});
</script>
我现在在ddl中获取对象[object Object]。所以更进一步,但在搜索之后,我没有更接近理解如何解析对象?
答案 0 :(得分:0)
此:
$("#projectcode").append("" + proj.ProjectCode + "");
必须是这样的:
$("#projectcode").append("<option>" + proj.ProjectCode + "</option>");
答案 1 :(得分:0)
使用kendoDropDownList,如下所示:
<input id="ddlTest" value="0" />
$.getJSON(URL)
.done(function (results) {
$("#ddlTest").kendoDropDownList({
dataTextField: "Name",
dataValueField: "UserID",
dataSource: results ,
optionLabel: " ",
index: 0
});
);
}