[英]DropDown is not populating in KENDO Grid
我无法在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解释包括“容器,选项”的内容,以及它们包含的值以及我们为什么要使用?
谢谢
经过一整天的尝试,我解决了这个问题。 我希望这会帮助别人。 真傻,花了我一整天。 终于我在AllPosition()中发现了问题。 这里的返回类型将是字符串。 该代码将是:
public string AllPosition()
{
EmployeeService employeeService = new EmployeeService();
List<Position> positions= employeeService.GetAllPosition();
var x = JsonConvert.SerializeObject(positions);
return x;
}
不要问我为什么返回“ JsonConvert.SerializeObject(位置)”而不返回“ json(位置)”。 我不得不将返回类型从JsonResult转换为字符串。
感谢大家的关注并竭诚为您服务。
您应该删除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);
}
}
}
更改您的控制器以执行此操作:
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" }
或者,您可以使用JSON.NET返回ActionResult
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.