【问题标题】:Kendo UI does not call the READ callKendo UI 不调用 READ 调用
【发布时间】:2013-10-04 09:15:43
【问题描述】:

我遇到了一个问题,即未调用 Kendo Grid 的 READ 操作,因此该网格不会填充任何数据。我已经关注了这些链接

http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/troubleshooting#the-ajax-bound-grid-does-not-populate

Kendo UI Grid is not calling READ method

但是问题仍然存在。

/// CS文件

public ActionResult GetItemsHome([DataSourceRequest] DataSourceRequest request , int page)
        {
            List<CustomItem> lst = new List<CustomItem>();

            return Json(lst.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
        }

///cs html文件

  @(Html.Kendo().Grid<CustomItem>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(o => o.No).Width("15%");
        columns.Bound(o => o.ShortDesc).Width("15%");
        columns.Bound(o => o.Category).Width("6%"); 
    })               
    .Sortable()
    .Pageable(p=>p.Refresh(true))
           .Filterable()
           .Scrollable()
           .Editable(edit => edit.DisplayDeleteConfirmation("Are You Sure To Delete This ").Mode(GridEditMode.PopUp))
    .ColumnMenu(col=>col.Sortable(false))
    .Groupable()
    .ToolBar(toolbar => toolbar.Create())
    .Resizable(resize => resize.Columns(true))
    .Reorderable(reorder => reorder.Columns(true))
    //.ClientDetailTemplateId("template")
    .HtmlAttributes(new { style = "height:430px;" })
    .DataSource(dataSource => dataSource
        .Ajax()            
        .PageSize(6)
        .Read(read => read.Action("GetItemsHome", "det"))  
        .Model(model => {
            model.Id(p => p.ID);                   

            })

                .Create(update => update.Action("EditingInline_Create", "det"))
                  //  .Read(read => read.Action("EditingInline_Read", "Default1"))
                    .Update(update => update.Action("EditingInline_Update", "det"))
                    .Destroy(update => update.Action("EditingInline_Destroy", "det"))

 )
)

加载JS的顺序

有什么想法吗? 谢谢

【问题讨论】:

  • 这实际上是@Stargazer 的评论,'动作是否被击中?我的意思是,如果你在那里放一个断点 int,它会停止吗?'
  • 您好,您的问题得到解决方案了吗?然后写在这里。

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


【解决方案1】:

您的操作GetItemsHome([DataSourceRequest] DataSourceRequest request , int page) 需要传递页面(非空值)。您有 3 个选项:

  1. 删除此参数(这是有道理的,因为request 包含您想要的所有内容)
  2. 像这样提供它:.Read(read =&gt; read.Action("GetItemsHome", "det", new { page = 10}))
  3. 使其可以为空,例如:int? page

编辑:按照上述任何操作后,从控制器操作返回一些数据(我正在创建一些任意数据,您可以从 DB 中返回它)以填充您的网格。比如:

public ActionResult GetItemsHome([DataSourceRequest] DataSourceRequest request , int? page)
    { 
       //List<CustomItem> lst = new List<CustomItem>();
       // Dummy data
       var data = new [] { new CustomItem(){ No = 1, ShortDesc = "xyz", Category = "abc"},
                           new CustomItem(){ No = 2, ShortDesc = "xyz", Category = "abc"} };
       return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }

如果您的控制器和操作名称在视图中拼写正确,则上述代码应该可以工作。

【讨论】:

  • 我已将操作方法​​设为可空(也尝试删除页面参数)但未调用操作方法。
  • 对不起,我迟到了。这是您GetItemsHome() 中的所有代码吗?你不应该得到任何东西,因为你返回的只是空的lst。用CustomItems 填写lst 并在上面拨打分机号。
【解决方案2】:

一些可能性,如果你的函数没有被调用:

  • 如果您的 ActionResult Index() 函数正在执行一些其他操作,而不是简单地 return View() 并退出,则您的 GetItemsHome() 函数可能不会被调用 - 我曾经遇到过这个问题。
  • 尝试将函数命名为“Read”而不是“GetItemsHome”。
  • 您的控制器是否有任何其他功能(即更新、销毁)?我会将它们注释掉,以防它们中存在导致问题的语法问题。
  • 我希望“det”是您的控制器的名称。
  • 为什么要传入额外的页面参数?尝试不使用它,并在模型中使用公共变量来保存该值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多