2017-09-19 1 views
2

J'utilise l'interface utilisateur Telerik pour ASP.NET MVC et j'ai grille définie comme ci-dessousKendo DataSource événement requestEnd se tiré plusieurs fois

@(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)) 
    ) 

Puis dans le fichier JS je suis remise à zéro la page de la grille à 1 onRequestEnd, Ainsi, l'utilisateur va toujours à la première page chaque fois que je récupérer les données de service à distance

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

Selon le kendo's documentation

requestEnd
Déclenché lorsqu'une demande de service distant est terminée.

Toutefois, l'événement requestEnd prend également feu sur le changement de page (et le tri). Donc, quand je change la page programmatique, il déclenche à nouveau l'événement requestEnd et passe en boucle. (note requestEnd est également renvoyé lorsque je change de page ou de tri manuellement sur l'interface utilisateur)

Est-ce intentionnellement ou une documentation incorrecte?

+0

je me lutté avec cette question pendant un certain temps et je ne l'ai pas trouvé une réponse depuis la grille de kendo ne semble pas avoir un événement qui se déclenche seulement au premier chargement et j'ai regardé beaucoup. La plupart des cas que j'ai eu ce problème j'ai réinitialisé la page dès que j'ai récupéré mes données. Soit sur le bouton cliquez soit sur demande. –

Répondre

0

J'ai fait quelque chose comme ci-dessous. e.response sera seulement rempli lorsque requestEnds dans le cadre de la réponse du serveur. Dans tous les autres cas, cela sera nul.

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

Je voudrais vraiment l'équipe kendo soit résoudre le problème ou de créer un nouvel événement