【问题标题】:Kendo MVC Grid Within a Window DataSource Read窗口数据源中的 Kendo MVC 网格读取
【发布时间】:2013-06-08 23:15:06
【问题描述】:

我正在尝试在 MVC 的剑道窗口中填充剑道网格,但无法找到问题所在。创建了窗口,并在窗口中创建了网格……但是从不调用 DataSource 的 Read 方法。

窗口:

@{    
Html.Kendo().Window()
           .Name("DListing")
           .Title("Listing")
           .Draggable()
           .Resizable()
           .Width(1000)
           .Height(500)
           .Visible(true)
           .Modal(true)
           .Actions(actions => actions
                .Maximize()
                .Close())
           .LoadContentFrom("Dispatch", "Listing", new { Number = @ViewBag.Number })
           .Render();}

Listing 控制器中的 Dispatch 方法返回一个包含网格的局部视图。

网格:

 @(Html.Kendo().Grid(Model)
        .Name("Grid")
        .Events(events => events.Change("onChange"))
        .HtmlAttributes(new { style = "height:400px;" })
        .Columns(columns =>
        {
            columns.Bound(p => p.Number);
            columns.Bound(p => p.DateTime).Format("{0:MM/dd/yyyy hh:mm tt}");
            columns.Bound(p => p.Location);
            columns.Bound(p => p.Name);
            columns.Bound(p => p.Elapsed_Hours);

        })
        .Groupable()
        .Pageable(pageable => pageable
            .Numeric(false)
            .Input(true)
            .PageSizes(new[] { 5, 10, 25 }))
        .Sortable()
        .Scrollable(scrollable => scrollable
            .Virtual(true))
        .Filterable()
        .Selectable(selectable => selectable
            .Mode(GridSelectionMode.Multiple))
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(13)
            .Sort(sort => { sort.Add(p => p.DateTime).Descending(); })
            .Model(model => { model.Id(p => p.Number); })
            .Read(read => read.Action("Listing_Read", "Listing", new { Number = @ViewBag.Number })))
        )

Listing_Read 方法:

    public ActionResult Listing_Read([DataSourceRequest] DataSourceRequest request, int Number)
    {
        return Json(GetListing(branchNumber).ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }

另外,应该注意的是,我通过并验证了 viewbag 数据可用于窗口以及稍后在网格中。

要了解更多信息,我最初在它自己的页面上有网格,它能够调用 read 方法并毫无问题地填充数据。将其移动到窗口中后,这成为了一个问题。

监控 http 请求,网格从不尝试调用 read 方法(因此请求不会失败)。我尝试在窗口加载可能会强制调用的想法后手动刷新数据源,但这也不会调用 read 方法。

我已经在这个问题上摸索了几个小时,现在尝试不同的东西,希望有人能发现问题所在:)

【问题讨论】:

  • 你有没有得到这个工作?我遇到了完全相同的问题。

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


【解决方案1】:

这对我有用:

1) 视图(~/Views/Home/Index.cshtml)

@(Html.Kendo().Window()
  .Name("myWindow")
  .Title("Title")
  .Actions(actions => actions.Pin().Minimize().Maximize().Close())
  //.Content(Html.Partial("gridCat").ToHtmlString())
  .LoadContentFrom("Load_gridCat", "Home")

)

2) 局部视图 (~/Views/Shared/gridCat.cshtml)

@(Html.Kendo().Grid<TelerikMvcApp1.Models.Category>()
  .Name("CategoriesGrid")
  .Columns(columns =>
  {
     columns.Bound(c => c.CategoryID).Title("Category").Width("10%");
     columns.Bound(c => c.CategoryName);
     columns.Bound(c => c.Description);
  })
  .Filterable()
  .Pageable()
  .Sortable()
  .Scrollable()
     .DataSource(dataSource => dataSource
     .Ajax()
     .Model(model => model.Id(p => p.CategoryID))
     .Read(r => r.Action("Categories_Read", "Home"))
  )
  .HtmlAttributes(new { style = "height:250px" })

)

3) 控制器 (~/Controllers/HomeController.cs)

public ActionResult Load_gridCat()
{
   return PartialView("gridCat");
}

public ActionResult Categories_Read([DataSourceRequest]DataSourceRequest request)
{
   using (var ctx = new NWindContext())
   {
      IQueryable<Category> categories = ctx.Categories;

      DataSourceResult result = categories.ToDataSourceResult(request);
      return Json(result, JsonRequestBehavior.AllowGet);
   }
}

【讨论】:

  • 我成功了,我的 partialView 的名称与 ActionResult 调用中名称的大小写不匹配 - 我今年的最后一个新手错误!
猜你喜欢
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多