Kendo UI の MVC ラッパーに問題があります。IEnumerable は count 以外の集計値をサポートしていないようです。私が得る例外は次のとおりです。型 'System.Linq.Enumerable' のジェネリック メソッド 'Sum' は、指定された型引数および引数と互換性がありません。メソッドが非ジェネリックの場合は、型引数を指定しないでください。
この問題を回避する方法がわかりませんし、それが剣道の欠陥であるかどうかもわかりません.
以下で使用される集計関数は、言うなれば LINQ ではなく、Kendo UI のラッパーが関数として提供するものであることに注意してください。詳細については、 Kendo UI ドキュメントを参照してください。
情報源:
- 北風
コントローラ:
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)); }
意見:
@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()
)