【问题标题】:Kendo UI Grid is not calling READ methodKendo UI Grid 没有调用 READ 方法
【发布时间】:2013-08-18 14:25:46
【问题描述】:

根据要求,我的 VIEW 上有一个 Kendo UI 网格。但遗憾的是,控制器中的读取功能没有被击中。这很烦人,我遇到了同样的问题,尽管一切似乎都是根据http://demos.kendoui.com/web/grid/index.html 上提供的文档。这是我的查看代码:

 @(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));
    }

我将如何解决这个问题?我是否遗漏了什么?请提出建议。

提前致谢。

【问题讨论】:

  • 我认为你必须添加这个kendo.aspnetmvc.min.js kendo js。
  • @Jaimin,我已经添加了上述js文件

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


【解决方案1】:

在您的页面中添加所有此文件

<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" />

我认为你错过了页面中的js 之一,可能是Jquery-1.8.1.min.js

【讨论】:

  • 理论上我是在添加 js 文件,但实际上它们并不是因为我得到了一些参考错误,在遵循@david enitan 提到的建议后我可以看到这些错误。
【解决方案2】:

我在使用 MVC 版本时遇到了类似的问题。

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

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

默认情况下,ASP.NET MVC 的 Kendo Grid 应该在以下情况下发出 POST 请求 配置为 ajax 绑定。这是由自定义实现的 数据源传输和架构。这些定义在 kendo.aspnetmvc.min.js。确保此文件包含在 其他 Kendo JavaScript 文件。

在确认脚本的顺序确实正确(并且知道它可能与 POST 有关)之后,我在网格中指定了在我的 Read 末尾使用的动词,如下所示:

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

这解决了我的问题。

【讨论】:

  • 也解决了我的问题。伙计,我很高兴我找到了这个!
  • 谢谢。在我的例子中,网格也在使用 Ajax 发送 POST 请求。添加 Get 强制它发送 GET 请求。但是,还有另一个问题。我必须将 JsonRequestBehavior.AllowGet 添加到我的 Action 以使其适用于 GET 请求。
【解决方案3】:

尝试使用 JQuery 的 document.ready() 调用 read 方法

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

saveStudent 也是一种学生...。您的网格绑定到 Student,但您正在返回 SavedStudent 对象

【讨论】:

  • 如果没有,您能否发送完整的代码示例...在 Google Chrome 中启动您的应用,右键单击页面上的任意位置,然后从选项中选择检查元素...。元素控制台在页面底部有以下选项...元素,资源,网络,来源...和控制台...如果您选择控制台,您可以看到正在引发的异常...如果您单击异常,它将带您到它被提出的地步......如果你解决了它,请告诉我......谢谢
【解决方案4】:

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 2013-04-07
      • 2013-10-09
      • 2015-07-31
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多