Controllerを実装
Controllerでは先ほどのMallModelクラスのGetMallList()メソッドを使用し、View側に項目一覧を渡します。この際、GridDataSourceActionと指定することで、View側のjQueryグリッドにグリッドデータ取得アクションであることを明示します。
[Infragistics.Web.Mvc.GridDataSourceAction]
public ActionResult GetMallList()
{
// ビューにモール情報の一覧を渡します。
return View(Models.MallModel.GetMallList());
}
Viewを実装
ビュー側では先ほど追加したInfragistics.Web.MVC.dllで実装されているラッパークラスを用いてjQueryグリッドの設定を行うことが可能です。
まずは、名前空間のインポートを行います。
@using Infragistics.Web.Mvc;
次にHtmlヘルパーを利用し、グリッドの宣言を行います。データ表示を行うための次のプロパティを設定します。
- DataSourceまたはDataSourceUrl
- Columns
その後、DataBind()メソッドを呼び出しデータのバインディングを、Render()メソッドを実行し、スクリプトの出力を行います。
@(Html.Infragistics().Grid<InfraShoppingMall.Models.Mall>()
.ID("igGrid1")
.DataSourceUrl(Url.Action("GetMallList"))
.Columns(columns =>
{
columns.For(x => x.ID).HeaderText("ID");
columns.For(x => x.Name).HeaderText("モール名");
columns.For(x => x.OpenTime).HeaderText("営業開始時刻");
columns.For(x => x.CloseTime).HeaderText("営業終了時刻");
columns.For(x => x.ShoppingCart).HeaderText("大型店舗");
columns.For(x => x.PhotoStudio).HeaderText("写真館");
columns.For(x => x.MedicalRoom).HeaderText("クリニック");
columns.For(x => x.PrintingService).HeaderText("印刷サービス");
columns.For(x => x.ShippingService).HeaderText("発送サービス");
})
.DataBind()
.Render()
)
出力されたスクリプトと、描画されたグリッドは次のようになります。スクリプトの内容をこちらの記事と比べてみてください。「jQueryを利用した軽量・高機能なクライアントサイド実装!」
<table id="igGrid1"></table>
<script type="text/javascript">
$(function(){$('#igGrid1').igGrid({
dataSource: '/Home/GetMallList',autoGenerateColumns: false,
responseDataKey: 'Records', generateCompactJSONResponse: false,
columns: [
{ key: 'ID', dataType: 'number', headerText: 'ID' },
{ key: 'Name', dataType: 'string', headerText: 'モール名' },
{ key: 'OpenTime', dataType: 'string', headerText: '営業開始時刻' },
{ key: 'CloseTime', dataType: 'string', headerText: '営業終了時刻' },
{ key: 'ShoppingCart', dataType: 'bool', headerText: '大型店舗' },
{ key: 'PhotoStudio', dataType: 'bool', headerText: '写真館' },
{ key: 'MedicalRoom', dataType: 'bool', headerText: 'クリニック' },
{ key: 'PrintingService', dataType: 'bool', headerText: '印刷サービス' },
{ key: 'ShippingService', dataType: 'bool', headerText: '発送サービス' } ],
localSchemaTransform: false });});
</script>
jQueryテンプレートを利用し、表示をカスタマイズ
このようにASP.NET MVCラッパーを使用しjQueryグリッドを生成することができましたが、データを単純に表示するだけではユーザーが情報を正しく理解することが難しくなります。このigGridではjQueryで提供されているテンプレート機能を利用し、それぞれのセルの表現をカスタマイズできます。jQueryテンプレートについは次の記事・サイトを参考にしてください。
igGridでjQueryテンプレートを利用する場合は次のプロパティを設定する必要があります。
- JQueryTemplate
- RowTemplate
テンプレートの実装を行う前に、今回の目標を設定します。
- 営業開始時刻、営業終了時刻を1列にまとめ、営業時間列とし、正しい情報を表示する
- 設備・サービス情報についても1列にまとめ、さらにユーザーが分かりやすいような表記とする


