1

我遇到了一个问题,剑道网格的 READ 操作没有被调用,因此网格没有填充任何数据。我已经关注了这些链接

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

Kendo UI Grid 没有调用 READ 方法

然而问题依然存在。

/// 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加载的顺序

有任何想法吗 ?谢谢

4

2 回答 2

0

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

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

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

  1. 删除这个参数(这是有道理的,因为request它包含了你想要的一切)
  2. 像这样提供:.Read(read => 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);
    }

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

于 2013-10-04T11:03:14.170 回答