MultiRowコントロールでは、C1JSONRequestを使用してデータを直接取得できます。これは、サーバー、テーブル、および列を含むリモートデータのURLを指定します。返される配列は、CollectionViewオブジェクトのデータソースとして使用されます。
CollectionViewHelper
は、コレクションに編集、フィルタ処理、グループ化、ソートなどのサービスを提供する静的クラスです。このクラスには次のメソッドも含まれます。
Read()
:コレクションからデータを取得します。Edit()
:MultiRowでExcel形式の編集を可能にします。BatchEdit()
:一度に複数の項目を編集できます。MultiRowのBind
プロパティは、特定の操作を実行するためのアクションURLメソッドを渡すことで、MultiRowをコレクションに連結するために使用されます。
このトピックでは、既存のデータソースからデータをリモートで取得する方法について説明します。これは、データをダッシュボードとして表すデータ集約型のアプリケーションやシナリオを開発する際に役立ちます。次の図は、C1JSON要求を行ってデータをモデルからフェッチした後のMultiRowコントロールを示します。この例では、「クイックスタート」トピックで作成したサンプルを使用しています。
C# |
コードのコピー
|
---|---|
using <ApplicationName>.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using C1.Web.Mvc; using C1.Web.Mvc.Serialization; |
RemoteBindController.cs
C# |
コードのコピー
|
---|---|
public partial class MultiRowController : Controller { // GET: MultiRow public ActionResult RemoteBind_Read([C1JsonRequest] CollectionViewRequest<Orders.Order> requestData) { return this.C1Json(CollectionViewHelper.Read(requestData, Orders.GetOrders())); } public ActionResult Index() { return View(); } } |
RemoteBind.cshtml
Razor |
コードのコピー
|
---|---|
@(Html.C1().MultiRow<Orders.Order>() .Bind(Url.Action("RemoteBind_Read")) .AllowSorting(true) .IsReadOnly(true) .CssClass("multirow") .LayoutDefinition(ld => { ld.Add().Header("注文").Colspan(2).Cells(cells => { cells.Add(cell => cell.Binding("Id").Header("ID").CssClass("id").Width("150")) .Add(cell => cell.Binding("Date").Header("注文").Width("150")) .Add(cell => cell.Binding("Amount").Header("金額").Format("c").CssClass("amount")) .Add(cell => cell.Binding("ShippedDate").Header("出荷")); }); ld.Add().Header("お客様").Colspan(3).Cells(cells => { cells.Add(cell => cell.Binding("Customer.Name").Name("CustomerName").Header("お客様").Width("200")) .Add(cell => cell.Binding("Customer.Email").Name("CustomerEmail").Header("お客様のEーメル").Colspan(2)) .Add(cell => cell.Binding("Customer.Address").Name("CustomerAddress").Header("住所")) .Add(cell => cell.Binding("Customer.City").Name("CustomerCity").Header("都市")) .Add(cell => cell.Binding("Customer.State").Name("CustomerState").Header("州")); }); })) |