2016-05-12 17 views
1

Ich habe Kendo Grid, die anfänglich mit diesen Daten lädt.Kendo Grid insgesamt nicht nach Ajax binden

@(Html.Kendo().Grid<GridModel>() 
       .Name("Grid") 
       .Columns(columns => 
       { 
        columns.Bound(p => p.ID).Hidden(true); 
        columns.Bound(p => p.Name); 
        columns.Bound(p => p.Village); 
        columns.Command(command => 
        { 
         command.Custom("ButtonP"); 
         command.Custom("ButtonEdit"); 
         command.Custom("ButtonActive"); 
         command.Custom("ButtonPause"); 
        }).Width("20%").HtmlAttributes(new { @class = "Custom" }); 
       }) 
       .Reorderable(reordering => reordering.Columns(true)) 
       .HtmlAttributes(new { style = "margin-bottom: 20px;" }) 
       .Sortable() 
       .EnableCustomBinding(true) 
       .ColumnMenu() 
     .AutoBind(false) 
       .Pageable(pageable => pageable 
        .Refresh(true) 
        .PageSizes(true) 
        .ButtonCount(5)) 
       .DataSource(dataSource => dataSource 
        .Ajax() 
        .Read(read => read.Action("GetData", "Home")) 
       // .PageSize(30) 
        .ServerOperation(true) 
      ) 
       .Events(e => e.DataBound("ModifyButtons")) 
      ) 

Danach gibt es eine Suchtaste, die das Backend ruft die Datensätze und insgesamt von einem Ajax-call.If ich alle Datensätze umfassen, um es für das Paging geht, aber wenn ich für Server gehen Paging Es zählt nicht zu holen ist oder Gesamtzahl Datensätze. Arbeits ajax

var dataSource = new kendo.data.DataSource({ 
        data: response 
       }); 
$("#Grid").data("kendoGrid").setDataSource(dataSource); 

und Backend

var searchItems = Service.Search(SearchModel).Select(GridModel); 
       return Json(searchItems, JsonRequestBehavior.AllowGet); 

Aber ich Server möchte Paging tun, und wenn ich zurückkehre diese (Non Arbeits Ajax)

var dataSource = new kendo.data.DataSource({ 
        data: response.Data, 
        total: response.Total 
       }); 
$("#Grid").data("kendoGrid").setDataSource(dataSource); 

und Backend

var searchItems = Service.Search(SearchModel).Select(GridModel); 
       var records = new 
       { 
        Data = searchItems, 
        Total = 90 
       }; 
       return Json(records, JsonRequestBehavior.AllowGet); 

== Hart codierte Summe zum Testen. SearchModel enthält Parameter für eine komplexe Suche

Bitte sagen Sie mir, wie Sie die Summe von Server-Seite finden Sie zeigt nur aktuelle Seitengröße als Gesamtzahl.

Antwort

1

Wenn Sie die Wrapper verwenden, kann dies eine einfachere Lösung für Sie sein.

Wenn Sie serverseitige Operationen tun dann Ihren Controller Signatur ändern so etwas wie dieser Hinweis zu sein: Ich bin es unter der Annahme, wie nicht eingestellt ist unter:

public JsonResult GetData([DataSourceRequest] DataSourceRequest request, SearchModel mySearchObject){ 
//stuff happens here. 
//get some results. 
var model = someresults; 
//more stuff happens here.... 

return Json(model.ToDataSourceResult(request),JsonRequestBehavior.AllowGet); 


} 

sicherzustellen, dass Sie haben die folgenden usings hinzugefügt obwohl dies funktioniert:

using Kendo.Mvc.Extensions; 
using Kendo.Mvc.UI; 

dies wird dann wieder ein neues datasource Objekt für Sie zurück, so dass das Gitter richtig binden soll und geben Sie die Summe, Daten usw. sind Sie nach.

ohne mehr zu sehen, was Sie tun, nimmt dies eine Reihe von Dingen an, aber sollte Ihnen hoffentlich die Stücke auf den ersten Blick geben, die in Ihrem Code fehlen.