2013-06-12 70 views
1

我想在MVC中的一個kendo窗口中填充一個kendo網格,並且無法找到錯誤。窗口被創建,網格在窗口內被創建...但是DataSource的Read方法從不被調用。Kendo在一個窗口內的MVC網格數據源閱讀

窗口:

@{  
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();} 

上市控制器的調度方法返回包含該網格的局部視圖。

網:

@(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數據可用於兩個窗口,並稍後在格。

對於更多的背景信息,我最初在自己的頁面上有網格,並且它能夠調用讀取方法並使用沒有問題的數據填充。在將它移動到窗口中之後是當這成爲問題時。

監控http請求,網格永遠不會嘗試調用read方法(所以請求不失敗)。我嘗試手動刷新數據源後窗口加載可能會強制進行調用,但也不會調用讀取方法。

我一直抓撓就這一個了幾個小時我的頭現在嘗試不同的東西,希望有人能發現問題是什麼:)

+0

你有沒有得到這個工作?我遇到了完全相同的問題。 – tg2

回答

1

下面是我工作:

1)查看(〜/查看/主頁/ 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)部分視圖(〜/查看/共享/ 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)控制器(〜/控制器/ 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); 
    } 
} 
+0

這不適合我。 – callisto

+0

我得到它的工作,我的partialView的名稱不匹配的ActionResult調用名稱的情況下 - 我最後一個新年的錯誤! – callisto