2017-09-19 4 views
2

Ich verwende Telerik UI für ASP.NET MVC gefeuert und ich habe Gitter definiert, wie untenKendo Datasource requestEnd Ereignis wird mehrmals

@(Html.Kendo().Grid<GridModel>() 
     .Name("grid") 
     .Columns(col => 
     { 
      col.Bound(o => o.ID) 
       .ClientTemplate("<input class = 't-checkbox-selectrow' type='checkbox' value='#=ID#'/><label></label>") 
       .HeaderTemplate("<input class = 't-checkbox-selectallrows' type='checkbox' id='selectAll'/><label></label>") 
       .Sortable(false) 
       .Filterable(false) 
       .HtmlAttributes(new { @class = "t-gridcol-selectrow" }) 
       .Width(40) 
       .Locked(true).Lockable(false);    
      col.Bound(o => o.StatusName).Width(150); 
      col.Bound(o => o.Deadline).Width(120); 
      col.Bound(o => o.Cost).Width(150);       
     })   
     .AutoBind(false) 
     .Pageable(x => x.PageSizes(UIConstants.PageSizes)) 
     .Sortable(x => x.AllowUnsort(false)) 
     .Resizable(resizing => resizing.Columns(true)) 
     .Reorderable(reorder => reorder.Columns(true)) 
     .Scrollable(s => s.Height("Auto")) 
     .DataSource(dataSource => dataSource 
      .Ajax() 
      .PageSize(UIConstants.DefaultPageSizeMax) 
      .Read(read => read 
      .Action("GetData", "DataProvider")) 
      .ServerOperation(false)) 
    ) 

Dann in der JS-Datei Ich bin das Zurücksetzen der Seite des Gitters 1 onRequestEnd, so Benutzer geht immer zurück zur ersten Seite, wenn ich die Daten von Remote-Service holen

$(function(){ 
    var ds = $("#grid").data("kendoGrid").dataSource; 
    ds.bind("requestEnd", function (e){  
     e.sender.page(1); 
    }) 
    }) 

gemäß den kendo's documentation

requestEnd
Wird ausgelöst, wenn eine Remote-Service-Anfrage abgeschlossen ist.

Allerdings wird das Ereignis requestEnd auch Feuer auf Seitenwechsel (und Sortierung). Wenn ich also das Seitenprogramm ändere, feuert es das requestEnd Ereignis erneut und geht in die Schleife. (beachten Sie requestEnd auch wird ausgelöst, wenn i Seite ändern oder Sortieren von Hand auf UI)

Ist dies durch Design oder falsche Dokumentation?

+0

ich mich für eine Weile mit dieser Frage zu kämpfen habe, und ich habe keine Antwort, da der Kendo-Grid erscheint nicht gefunden ein Ereignis zu haben, das nur beim ersten Laden feuert und ich habe ziemlich viel geschaut. In den meisten Fällen, in denen ich dieses Problem hatte, habe ich die Seite zurückgesetzt, sobald ich meine Daten erneut abgefragt habe. Entweder auf Knopfdruck oder bei Bedarf. –

Antwort

0

Ich habe etwas wie unten getan. e.response wird nur ausgefüllt, wenn requestEnds als Teil der Antwort vom Server. In allen anderen Fällen wird es null.

dataSource.bind("requestEnd", function (e) { 
     if (e.status != "error" && e.response != null) {        
       // do soemething here     
     } 

Ich würde wirklich gerne Kendo Team entweder das Problem beheben oder neues Ereignis erstellen

Verwandte Themen