在 PartialView 中使用 Kendo 网格

Using Kendo Grid in PartialView

我的 MVC 应用程序的索引视图中有两个 <section>,我想在这些部分中呈现两个局部视图。将 Kendo 网格渲染到一个索引没有问题。但是,为了在 Kendo 网格上呈现数据,我可以使用控制器中返回 Json 的两种方法,如下所示。你能给我一个如何实现这一目标的例子吗?

控制器:

public ActionResult Index()
{
    return View();
}

public ActionResult Issues_Read([DataSourceRequest]DataSourceRequest request)
{
    IQueryable<Issue> issues = db.Issues;
    DataSourceResult result = issues.ToDataSourceResult(request, c => new IssueViewModel 
    {
        ID = c.ID,
        ProjectID = c.ProjectID
    });

    return Json(result);
}


查看:

@(Html.Kendo().Grid<IssueViewModel>()
  .Name("grid")
  .Columns(columns =>
  {
      columns.Bound(c => c.ProjectID);
      columns.Command(command => { command.Edit(); command.Destroy(); }).Width(180);
  })
  .ColumnMenu()
  .Editable(editable => editable.Mode(GridEditMode.PopUp))
  .Pageable()
  .Navigatable()    
  .DataSource(dataSource => dataSource
      .Ajax()
      .Model(model => model.Id(p => p.ID))
      .Read(read => read.Action("Issues_Read", "Issue"))
      .Create(create => create.Action("Issues_Create", "Issue" ))
      .Update(update => update.Action("Issues_Update", "Issue"))
      .Destroy(destroy => destroy.Action("Issues_Destroy", "Issue"))
  )
)

为了多次使用同一个局部视图,网格 ID 应该是唯一的,因此在局部视图数据中传递 ID 是一种可能的解决方案。在你的情况下 局部视图首次调用:

@Html.Partial("grid", new ViewDataDictionary { { "id", "grid1" }})

局部视图第二次调用:

@Html.Partial("grid", new ViewDataDictionary { { "id", "grid2" }})

部分查看内容:

@(Html.Kendo().Grid<IssueViewModel>()
  .Name(@ViewData["id"].ToString())
...