Kendo UI不会调用READ调用

时间:2013-10-04 09:15:43

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

我遇到的问题是没有调用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 file

  @(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的顺序                                  

有什么想法吗? 感谢

2 个答案:

答案 0 :(得分:0)

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

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

    编辑:执行上述任何操作后,从控制器操作返回一些数据(我正在创建一些任意数据,您可以从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);
        }
    

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

答案 1 :(得分:0)

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

  • 如果您的ActionResult Index()函数正在执行其他操作而不仅仅是return View()并退出,则可能无法调用您的GetItemsHome()函数 - 我曾经遇到过此问题。
  • 尝试命名函数“Read”而不是“GetItemsHome”。
  • 您的控制器是否还有其他功能(即更新,销毁)?我会评论它们,以防它们中存在导致问题的语法问题。
  • “det”,我希望,是你的控制器的名字。
  • 为什么要传递额外的页面参数?如果没有它,请尝试使用模型中的公共变量来保存该值。