DropDown不会在KENDO Grid中填充

时间:2014-11-27 07:55:15

标签: javascript c# jquery oop kendo-ui

我无法在数据来自数据库的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解释包括“容器,选项”,它们包含什么价值以及我们需要使用的原因?

谢谢

4 个答案:

答案 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

Sven Grosen