J'ai quelques problèmes avec les wrappers MVC pour Kendo UI. Il semble que IEnumerable ne supporte aucune valeur d'agrégation autre que count. L'exception que j'obtiens est: Aucune méthode générique 'Sum' sur le type 'System.Linq.Enumerable' n'est compatible avec les arguments et les arguments de type fournis. Aucun argument de type ne doit être fourni si la méthode est non générique.Aucune méthode générique « Somme » du type « System.Linq.Enumerable » est compatible
Je ne suis pas sûr de savoir comment contourner ce problèmes je ne suis pas sûr que ce soit un défaut avec Kendo.
Veuillez noter que la fonction d'agrégat utilisée ci-dessous n'est pas LINQ par exemple mais ce que l'encapsuleur Kendo UI fournit en tant que fonction. S'il vous plaît voir Kendo UI Documentation pour plus d'informations.
Source de données:
- Northwind
Controller:
public ActionResult Index() { return View(); }
public ActionResult Read([DataSourceRequest] DataSourceRequest request) { return GetView(request); }
private IEnumerable<dynamic> GetData() { var db = new NwEntities(); return db.Products; }
private JsonResult GetView(DataSourceRequest request) { return Json(GetData().ToDataSourceResult(request)); }
Vue:
@model IEnumerable<dynamic>
@(
Html.Kendo().Grid(Model).Name("Grid")
.DataSource(ds =>
ds.Ajax()
.Model(m =>
{
m.Id("ProductID");
m.Field("ProductName", typeof(string));
m.Field("UnitPrice", typeof(decimal));
})
.Aggregates(aggregate => aggregate.Add(a => "UnitPrice").Count().Sum())
.Read(r => r.Action("Read", "Home"))
)
.Columns(columns =>
{
columns.Bound("ProductID");
columns.Bound("ProductName");
columns.Bound("UnitPrice").Format("{0:c}");
})
.Groupable()
)
'.Count(). Sum()' - '.Aggregates (...)' - ceux-ci ne sont tout simplement pas valides. –
Je suppose que cela est causé par votre 'IEnumerable'. Pourquoi utilisez-vous 'IEnumerable ' du tout? Aussi je ne sais pas si les wrappers KendoUI le supportent ... Alors essayez de créer une classe Product avec les proProdicts ProductID, ProductName, UnitPrice pour voir si cela fonctionne. –
nemesv
@TimothyShields Le '.Count(). Sum()' n'est pas les méthodes Linq mais l'API de configuration de la grille de l'UI Kendo. Voir la [documentation.] (Http://docs.kendoui.com/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/configuration) – nemesv