我无法在数据来自数据库的KENDO下拉列表中填充数据。这是KENDO DROPDOWN的代码:
function positionDropDownEditor(container, options) {
$('<input name="Size" required data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
dataTextField: "Name",
dataValueField: "Id",
dataSource: {
transport: {
read: {
dataType: "json",
url: "/Employee/AllPosition",
}
}
}
});
}
数据来自的控制器:
public JsonResult AllPosition()
{
EmployeeService employeeService = new EmployeeService();
List<Position> positions= employeeService.GetAllPosition();
return Json(positions);
}
这里的错误是数据没有填充在下拉列表中吗? PLZ解释包括“容器,选项”,它们包含什么价值以及我们需要使用的原因?
谢谢
答案 0 :(得分:2)
经过一整天的考验,我解决了这个问题。我希望这会有助于其他人。太傻了,我花了整整一天。最后我在AllPosition()中发现了问题。这里的返回类型将是刺痛。代码将是:
public string AllPosition()
{
EmployeeService employeeService = new EmployeeService();
List<Position> positions= employeeService.GetAllPosition();
var x = JsonConvert.SerializeObject(positions);
return x;
}
不要问我为什么返回“JsonConvert.SerializeObject(positions)”不返回“json(positions)”。我不得不将JsonResult的Return类型转换为字符串。
感谢所有人的关注,并试图提供帮助。
答案 1 :(得分:0)
您应该删除autoBind标记
控制是否在初始化时将窗口小部件绑定到数据源。
编辑:
对不起,我完全忽略了它已经false
。反正...
如果您从服务器得到正确的响应,您是否检查过浏览器的调试器?可能是某些属性无法正确序列化,服务器返回null。
将此方法添加到Global.asax.cs
捕获更多错误:它将打印错误,否则无法显示错误...如果错误在服务器上
protected void Application_EndRequest() {
if (Context.AllErrors != null) {
System.Diagnostics.Debugger.Break();
foreach (var ex in Context.AllErrors) {
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
答案 2 :(得分:0)
更改控制器以执行此操作:
public JsonResult AllPosition()
{
EmployeeService employeeService = new EmployeeService();
List<Position> positions= employeeService.GetAllPosition();
return Json(positions, JsonRequestBehavior.AllowGet);
}
编辑:
还可以尝试将JavaScript代码更改为:
$('<input name="Size" data-text-field="Name" data-value-field="Id" required data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: true,
dataSource: {
transport:
{
read: {dataType: "json",
url: "@Url.Action("Employee", "AllPosition")", type: "GET" }
}
}
});
如果此视图位于某个区域,并且您发现没有进入控制器,那么您可以在读取中添加区域,如下所示:
url: "@Url.Action("Employee", "AllPosition")",new {@area = "AreaName"} type: "GET" }
答案 3 :(得分:0)
作为替代方案,您可以使用JSON.NET to return ActionResult