2

J'utilise la grille uzi de kendo avec pagination côté serveur, filtrage et tri. Avec C# WebAPI où tous les paramètres de grille tels que filtres, tris et currentpage et taille de page sont envoyés dans l'API url by kendo et j'ai DataSourceRequest dans mon WebAPI qui peut lire tous les paramètres de requête et les appliquer pendant que je retourne les données de l'API.Paramètres de requête de grille de kendo ui

J'ai une situation spécifique où. J'ai un lien d'exportation dans lequel j'aurai besoin d'utiliser le service $ http pour invoquer la même API que j'ai utilisée avec tous les filtres et tris qui sont appliqués à la grille avec tous les enregistrements à renvoyer.

J'ai toutes les propriétés de la grille telles que les filtres et les tris.

que je peux accéder à partir de DataSource kendogrid

var query = { 
     page: 1, 
     pageSize: grid.dataSource.total(), 
     sort: grid.dataSource.sort(), 
     filter: grid.dataSource.filter() 
    } 

J'ai besoin d'invoquer la même API que j'utilise pour rendre kendogrid en appliquant tous les filtres et les tris. quelqu'un peut-il m'aider comment la grille de kendo génère la chaîne de requête avec tous ces paramètres. donc peut être je peux réutiliser la même fonction

http://localhost:3306/api/test/62ca5945e15b0cb85bec257eec8f0bf1/grid? filtre = StepType ~ eq ~% 27Rejected% 27 & sort = & total = & pageSize = 10 & page = 2 & isFirstLoad = false & showColumns = Nom% 2CtotalScore% 2Crank% 2CexpirationDate% 2CstepName% 2C & _ = 1450310137369

Quelqu'un peut-il m'aider où puis-je trouver une fonction pour générer tous les paramètres de requête avec les valeurs de filtrage, de pagination et de tri que j'ai extraites de la grille.

Répondre

2

Je l'ai implémenté précédemment en utilisant parameterMap en utilisant angular, mais j'imagine que ce serait très similaire en utilisant simplement jQuery. Voir ceci .

Un extrait de mon code à l'aide parameterMap

$scope.pageableData = new kendo.data.DataSource({ 
      type: "aspnetmvc-ajax", 
      pageSize: $scope.pageSize, 
      serverPaging: true, 
      serverFiltering: true, 
      serverSorting: true, 
      transport: { 
       read: { 
        url: $rootScope.projectURL + '/api/DocLibItems/PageableGridItems', 
        dataType: 'json', 
        type: 'post' 

       }, 
       parameterMap: function (data, type) { 
        $scope.pageableGridCreateCache = false; 
        var filter = data.filter === undefined ? null : data.filter; 
        if (filter) { 
         angular.forEach(filter.filters, function (item) { 
          item._operator = item.operator; 
         }); 
        } 
        return { 
         ProjectID: $scope.projectID, 
         PageNumber: data.page, 
         PageSize: data.pageSize, 
         Sorting: data.sort === undefined ? null : data.sort, 
         Filtering: filter 
        }; 
       } 
      } 
}); 

ParmeterMap revient ProjectID, PageNumber, PageSize, le tri et le filtrage. L'API devrait s'attendre à recevoir ces données et à retourner des données en fonction de cela. L'appel initial appellera la même API où le numéro de page serait 1, pageSize serait le pageSize par défaut, le tri serait null, et il n'y aurait pas de filtrage.

L'appel à l'API est un message, il n'y aura donc aucun paramètre dans l'URL.

+0

Merci beaucoup. Je ne pensais pas que transformer les params est aussi simple. –