"未定义不是函数"使用仅包含asp.mvc包装器和Datasource网格的KendoUI自定义下载时出错

时间:2015-04-07 17:21:20

标签: asp.net-mvc-4 kendo-ui kendo-grid kendo-asp.net-mvc

我正在尝试实现自定义Kendo下载,该下载仅包含ASP.NET MVC 4项目中的网格,该项目使用razor生成网格,并使用服务器端代码生成网格数据。我在自定义下载页面中选择了生成这些脚本的适用字段: kendoScripts

我已将脚本和css包含在我的_layout.cshtml页面的标头标记中: renderedScripts

调用网格的代码绑定到一个带有两个字符串属性(name,desc)的简单模型,并调用一个控制器操作:

@(Html.Kendo().Grid<GridStandAloneTest.Models.GridModel>()
.Name("Grid")
.Sortable()
.Pageable()
.DataSource(ds => ds.Ajax().Read("GetPeople", "Home")
    .Batch(true)
    .ServerOperation(false))
.Columns(x => 
{
    x.Bound(c => c.Name);
    x.Bound(c => c.Salary); 
}))

当页面呈现时,网格可见,但控制器操作永远不会被调用。我还在控制台中得到“未捕获的TypeError:undefined不是函数”。但是,如果我单击一个列,它会调用控制器操作,但它会将其返回到一个新的选项卡,其中包含URL下的JSON数据。

控制器代码如下所示:

    public ActionResult GetPeople([DataSourceRequest]DataSourceRequest DataSource)
    {
        var people = new List<GridStandAloneTest.Models.GridModel>()
        {
            new GridStandAloneTest.Models.GridModel(){Name = "Jon", Salary = "50,000"},
            new GridStandAloneTest.Models.GridModel(){Name = "Joe", Salary = "100,000"}
        };

        DataSourceResult result = people.ToDataSourceResult(DataSource);

        return Json(result, JsonRequestBehavior.AllowGet);
    }

2 个答案:

答案 0 :(得分:5)

你至少有两个问题:

  1. 您多次包含jQuery。确保jQuery仅包含一次或网格js将中断。
  2. 在复制时,我注意到即使我选择了它,似乎Pager.js文件也没有包含在自定义构建中。我得到的错误是 instanceof不是函数,它指向它检查寻呼机代码的位置。

答案 1 :(得分:1)

您包括jQuery 1.7.1,以及最新版本的KendoUI请求1.9.1+

http://docs.telerik.com/kendo-ui/install/prerequisites