Kendo, comment faire de la Grille de serveur d'échange à l'aide de mvc4 helper
Je suis en utilisant mvc4. Sur une de mes page, il a Kendo de la Grille. Je veux montrer à 5 lignes par page. Je n'ai aucun problème à le faire à l'aide de javascript, cependant, Si je suis en utilisant mvc helper. Je suis perdu, je ne trouve pas d'échantillons en ligne.
voici mon code javascript.
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#grid").kendoGrid({
dataSource: {
type: "json",
serverPaging: true,
pageSize: 5,
transport: { read: { url: "Products/GetAll", dataType: "json"} },
schema: { data: "Products", total: "TotalCount" }
},
height: 400,
pageable: true,
columns: [
{ field: "ProductId", title: "ProductId" },
{ field: "ProductType", title: "ProductType" },
{ field: "Name", title: "Name" },
{ field: "Created", title: "Created" }
],
dataBound: function () {
this.expandRow(this.tbody.find("tr.k-master-row").first());
}
});
});
maintenant, si je suis en utilisant mvc helper
@(Html.Kendo().Grid(Model)
.Name("Grid") //please help me to finish the rest
Mise à jour:
Ajoutant le code de l'action.
[HttpPost]
public ActionResult GetAll([DataSourceRequest]DataSourceRequest request, int id)
{
var products= ProductService.GetAll(id);
return Json(products.ToDataSourceResult(request));
}
GetAll méthode de la couche service:
public IQueryable<Product> GetAll(int id)
{
var products= ProductRepository.Get(p => p.Id== id && p.IsActive == true, null, "ProductionYear")
.OrderBy(o => o.Name); //.ToList();
return Product.Select(p => new ProductVM()
{
Name = p.Name,
ProductionYear= p.ProductionYear.Year.ToString()
Id = p.Id
}).AsQueryable();
}
maintenant, si je lance l'application, je reçois l'erreur suivante:
"LINQ to entities ne reconnaît pas la méthode" du Système.String ToString ()', et cette méthode ne peut pas être traduit dans un magasin d'expression."}
dans le GetAll méthode, j'ai fait un commentaire sur la "ToList()". Si j'utilise ToList, tout fonctionne. mais je vais l'interroger tous les rangs au lieu de cela, juste ces lignes j'avais besoin de cette page.
OriginalL'auteur qinking126 | 2012-10-03
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir la
PageSize
à l'intérieur de la La méthode de la source de données. De sorte que vous aurez besoin de quelque chose comme:Vous pouvez trouver plus d'info la KendoUI Grille Asp.NET MVC wrappers de la documentation.
J'ai juste pris votre code js et transformé en un Rasoir helper systax. Je ne sais pas comment est-ce que votre "GetAll" la méthode est mise en œuvre. Mais si vous préparez votre méthode d'action comme dans le article lié par exemple, à l'aide de la
ToDataSourceResult
méthode qu'il va faire correctement le côté serveur pageing et seulement de retour de 5 lignes.- Je mettre à jour ma question, veuillez jeter un oeil, ne peut toujours pas le faire fonctionner
.PageSize() travailler avec .Serveur() ainsi que .Ajax(), pour le serveur lié ensembles de données.
OriginalL'auteur nemesv
Si vous êtes pas à l'aide de Kendo de l'ASP.NET MVC wrappers et utilisez le Kendo objets JavaScript directement et vous essayez de le faire côté serveur pagination, alors vous avez besoin pour créer votre source de données comme suit:
Et votre Lecture méthode de contrôleur va ressembler à quelque chose comme:
type
,serverSorting
etserverPaging
sont importants pour s'assurer de la pagination et de tri qui se passe côté serveur.type
doit êtreaspnetmvc-ajax
, sinon les données de la requête ne sera pas reconnu par le modèle de classeur qui a été spécifié par [DataSourceRequest] attribut dans la méthode de Lecture. Vous ne pouvez pas omettre que l'attribut, sauf si vous voulez écrire votre propre modelbinder pour analyser les données de la requête envoyée par le kendo source de données, ce qui n'est pas conforme à la modelbinding conventions utilisées par les DefaultModelBinder dans ASP.NET MVC.OriginalL'auteur Umar Farooq Khawaja
L'autre réponse ne fonctionne pas si vous utilisez Kendo UI pour ASP.NET MVC. Si vous n'avez pas vous avez besoin pour mettre en œuvre la pagination de vous-même. Le Kendo source de données va envoyer pageSize et de la page en cours lors d'une demande. Vous pouvez l'utiliser pour faire de la pagination. Il envoie également "prendre" et "ignorer" ce qui rend les choses encore plus facile (indice Linq).
Consultez la documentation: docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/...
OriginalL'auteur Atanas Korchev
L'erreur
"LINQ to entities ne reconnaît pas la méthode" du Système.String ToString ()', et cette méthode ne peut pas être traduit dans un magasin d'expression."}
est auto-explicatif, à gat autour de cela, vous devriez faire quelque chose comme
à l'aide de AsEnumerable apporte tous les enregistrements de la base de données, afin de mieux les utiliser après filtrage
plutôt
produits.AsEnumerable.où(x => x.active = true)
OriginalL'auteur user971374
Télécharger kendo exemples, puis décompressez-le et suivez
<your directory>\Kendo UI
pour ASP.NET MVC T12013\wrappers\aspnetmvc\Examples\Areas\razor\Views\web\grid\
pour la vue d'index
et
<your directory>\Kendo UI
pour ASP.NET MVC T12013\wrappers\aspnetmvc\Examples\Controllers
pour IndexController
dans votre point de vue, vous pouvez également .ServerOperation(vrai) comme ci-dessous afin d'éviter
Erreur lors de la sérialisation ou de la désérialisation en utilisant le JSON JavaScriptSerializer. La longueur de la chaîne dépasse la valeur définie sur le maxJsonLength de la propriété.
Si vous avez de grandes données à extraire
également dans le contrôleur de ActionResult Products_Read envisager
OriginalL'auteur paulo carraca