Kendo UI Grid不会调用READ方法

时间:2013-08-18 14:25:47

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

根据要求,我在我的VIEW上有一个Kendo UI网格。但是很遗憾,读取功能没有在控制器中被击中。这很烦人,即使每个人看起来像是一样,我也会遇到同样的问题根据{{​​3}}提供的文件。这是我的查看代码:

 @(Html.Kendo().Grid<StudentManagement_Models.Student>()
.Name("studentsGrid")
.Columns(columns =>
{

    columns.Bound(p => p.Id).Groupable(false);
    columns.Bound(p => p.FirstName);
    columns.Bound(p => p.MiddleName);
    columns.Bound(p => p.LastName);
    columns.Bound(p => p.CGPA);



})
    .AutoBind(true)
    .Pageable()
    .Navigatable()
    .Sortable()
    .DataSource(dataSource => dataSource
            .Ajax()
                            .Read(read => read.Action("GetAllStudents", "Student"))
            )
        )

这是我的控制器动作:

 public ActionResult GetAllStudents([DataSourceRequest] DataSourceRequest request)
    {
        //Thread.Sleep(2000);
        StudentManagement_Models.Student student = new StudentManagement_Models.Student();
        StudentHelper helper = new StudentHelper();
        student.SavedStudents = helper.GetAllStudents();

        return Json(student.SavedStudents.ToDataSourceResult(request));
    }

我如何解决这个问题?我错过了什么?请提出建议。

提前致谢。

5 个答案:

答案 0 :(得分:7)

在页面中添加所有此文件

<script src="~/Script/Jquery-1.8.1.min.js" type="text/javascript"></script>
<script src="~/Script/jquery-ui-1.8.20.min.js" type="text/javascript"></script>
<script src="@Url.Content("~/Script/kendo.all.min.js")" type="text/javascript"></script>
<script src="~/Script/kendo.web.min.js" type="text/javascript"></script>
<script src="~/Script/kendo.aspnetmvc.min.js" type="text/javascript"></script>
<link href="~/Content/kendo.common.min.css" rel="stylesheet" type="text/css" />
<link href="~/Content/kendo.default.min.css" rel="stylesheet" type="text/css" />

我认为您错误地点击了您网页中的jsJquery-1.8.1.min.js

答案 1 :(得分:4)

我遇到了与MVC版本类似的问题。

我注意到我收到了404但是当点击Chrome调试器中的404'd链接时,它确实会触及我的控制器方法。然后我注意到它正在使用POST(并且我有HttpVerbs.Get)指定。

然后我发现了这个(来自http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/troubleshooting):

  

默认情况下,用于ASP.NET MVC的Kendo Grid应该在何时发出POST请求   配置为ajax绑定。这是通过自定义实现的   DataSource传输和架构。那些是在。中定义的   kendo.aspnetmvc.min.js。确保在此之后包含此文件   其他Kendo JavaScript文件。

在验证脚本确实处于正确的顺序之后(并且知道它可能与POST有关)我在网格中的Read的末尾指定了动词:

.Read(read => read.Action("MyList_Read", "Diagnosis").Type(HttpVerbs.Get))

这解决了我的问题。

答案 2 :(得分:3)

尝试使用JQuery的document.ready()

调用read方法

$(document).ready(function () {  var grid = $("#studentsGrid").data("kendoGrid")
 grid.dataSource.read()
})

也是保存学生类型的学生.... Ur网格绑定到学生,但是你正在返回SavedStudent对象

答案 3 :(得分:1)

“默认情况下,用于ASP.NET MVC的Kendo Grid应该在配置为ajax绑定时发出POST请求。”??? 对于Kendo UI版本2014.1.318,我认为,默认情况下,用于asp.net mvc的Kendo Grid在配置为ajax绑定时会发出GET请求。

答案 4 :(得分:0)

我发现如果同一网页上有两个网格(在这种情况下,在不同的标签中),那么每个网格必须在MVC控制器中有自己的数据源方法 - 即使两个网格都使用相同的数据,< / p>