【jqGrid for ASP.NET MVC Documentation】.学習ノート.2.jqGrid Model-View-Controller分離
10410 ワード
1基本
コードと説明を分離し、ASP.NET MVCアプリケーションでは非常に重要です.したがって、jqGridのmvcモードでは、Model、Controller、Viewなど、共通のグリッドインストール設定が使用されます.
Model、mvcのフォルダに配置する必要があります.
Viewは、girdがあなたの駅のレイアウトを表示します.あなたのView(強いタイプView)でgrid Modelを参照し、それをパラメータとしてView HtmlHelperに渡すことができます.これによりgirdはModelに基づいています.
Controllerでは、Controllerを使用してModel(一部のModel設定を変更)とgridインタラクションをカスタマイズできます.ページング、ソート、編集などのイベントがActionsとしてControllerに渡され、カスタムロジックを書いたり、dbを更新したりすることができます.
2 Model演習の作成
jqGrid Modelの一般的なインストールです.Modelフォルダに配置する必要があります.新しいgird modelを作成します.Modelsフォルダを右クリックし、「新規Classの追加」を選択します.サブフォルダに置くこともできます.この例では、モデル/Gridフォルダに配置し、OrdersJqGridModelという名前を作成します.csのModel class.
設定したらcsファイルではgridインスタンスを作成できます.
その前にTrirandを参照する必要があります.Web.Mvc.dllとTrirand.Web.Mvc.
jqGridモデルのタイプはJQGridです.
あなたがしなければならない唯一のことはcolumnsを明確に定義することです.
すべてのModel設定は、追加、削除、カラム属性の変更、grid属性の変更など、Controllerで上書きできます.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Trirand.Web.Mvc;
using System.Web.UI.WebControls;
namespace JQGridMVCExamples.Models
{
public class OrdersJqGridModel
{
public JQGrid OrdersGrid { get; set; }
public OrdersJqGridModel()
{
OrdersGrid = new JQGrid
{
Columns = new List<JQGridColumn>()
{
new JQGridColumn { DataField = "OrderID",
// always set PrimaryKey for Add,Edit,Delete operations
// if not set, the first column will be assumed as primary key
PrimaryKey = true,
Editable = false,
Width = 50 },
new JQGridColumn { DataField = "OrderDate",
Editable = true,
Width = 100,
DataFormatString = "{0:d}" },
new JQGridColumn { DataField = "CustomerID",
Editable = true,
Width = 100 },
new JQGridColumn { DataField = "Freight",
Editable = true,
Width = 75 },
new JQGridColumn { DataField = "ShipName",
Editable = true
}
},
Width = Unit.Pixel(640),
Height = Unit.Percentage(100)
};
OrdersGrid.ToolBarSettings.ShowRefreshButton = true;
}
}
}
3 View演習の作成
新しいgrid Viewを作成するには、「View」フォルダを右クリックし、「新規Viewの追加」を選択します.サブフォルダに配置することもできます.この例では、View/Gridに配置し、PerformanceLinqと命名します.
強いタイプのViewと作成したばかりのModelクラスを選択します.これによりModelを参照し、パラメータとしてViewHtmlHelperに渡すことができます.
まず、jqGridのネーミングスペースを導入する必要があります.
<%@ Import Namespace="JQGridMVCExamples.Models" %>
次に、外部gridスクリプトとcss依存性を追加します.
1
<
head
id
="Head1"
runat
="server"
>
2
<
title
>
Performance Linq
title
>
3
<
script
type
="text/javascript"
src
="Scripts/jquery-1.3.2.min.js"
>script
>
4
<
script
type
="text/javascript"
src
="Scripts/jqgrid/i18n/grid.locale-en.js"
>script
>
5
<
script
type
="text/javascript"
src
="Scripts/jqgrid/jquery.jqGrid.min.js"
>script
>
6
<
link
rel
="stylesheet"
type
="text/css"
href
="Content/themes/redmond/jquery-ui-1.7.1.custom.css"
/>
7
<
link
rel
="stylesheet"
type
="text/css"
href
="Content/themes/ui.jqgrid.css"
/>
8
head
>
最後にjqGrid HtmlHelperを使用して、gridをページ上の必要な場所に配置します.HtmlHelperは参照でModelを取得し、それを使用してgirdをレンダリングします(コントローラでModelのデフォルトを変更することができます).HtmlHelperの最初のパラメータはModel(強いタイプのViewから渡される)であり、2番目のパラメータはgridのIDである.
1
<%
=
Html.Trirand().JQGrid(Model.OrdersGrid,
"
JQGrid1
"
)
%>
最後に、ページはこのように見えます
1
<%
@ Page Language
=
"
C#
"
Inherits
=
"
System.Web.Mvc.ViewPage
"
%>
2
<%
@ Import Namespace
=
"
Trirand.Web.Mvc
"
%>
3
<%
@ Import Namespace
=
"
JQGridMVCExamples.Models
"
%>
4
5
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
6
7
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
8
<
head
id
="Head1"
runat
="server"
>
9
<
title
>
Performance Linq
title
>
10
<
script
type
="text/javascript"
src
="Scripts/jquery-1.3.2.min.js"
>script
>
11
<
script
type
="text/javascript"
src
="Scripts/jqgrid/i18n/grid.locale-en.js"
>script
>
12
<
script
type
="text/javascript"
src
="Scripts/jqgrid/jquery.jqGrid.min.js"
>script
>
13
<
link
rel
="stylesheet"
type
="text/css"
href
="Content/themes/redmond/jquery-ui-1.7.1.custom.css"
/>
14
<
link
rel
="stylesheet"
type
="text/css"
href
="Content/themes/ui.jqgrid.css"
/>
15
head
>
16
<
body
>
17
<
div
>
18
<%
=
Html.Trirand().JQGrid(Model.OrdersGrid,
"
JQGrid1
"
)
%>
19
div
>
20
<
br
/><
br
/>
21
<
div
>
22
<%
Html.RenderPartial(
"
CodeTabs
"
);
%>
23
div
>
24
25
body
>
26
html
>
4 Controller演習の作成
Controller/Gridフォルダの下にPerformanceLinqControllerを新規作成します.
少なくとも2つのActionはgridを定義する必要があります.Modelを設定するためのsetup action.Data requested action,gridはクライアントからデータを送信し,サービス側コードが実行する必要があるデータバインディングを教える.
ここにはすべてのactionを含む完全なControllerがあります.
PerformanceLinq actionはgridを設定するためのactionです.ここではjqGrid Modelの参照を得て、いくつかの設定を変更することができます.設定が変更されていない場合は、デフォルトの設定が使用されます.
DataUrlは、DataRequestedがデータをロードすることに関心を持つアクションを設定する必要があります.
DataRequested ActionはJsonResultに戻る必要があります.
NorthWind ModelはLinq-to-Sqlの例である.Orders tableを使用しました.
DataBindを呼び出し、Modelをパラメータとして渡す必要があります.
これによりjqGridは、ページング、ソート、検索など、すべてのことを自動的に処理します.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using JQGridMVCExamples.Models;
using System.Web.UI.WebControls;
namespace JQGridMVCExamples.Controllers.Grid
{
public partial class GridController : Controller
{
// This is the default action for the View. Use it to setup your grid Model.
public ActionResult PerformanceLinq()
{
// Get the model (setup) of the grid defined in the /Models folder.
var gridModel = new OrdersJqGridModel();
// Customize/change some of the default settings for this model
// ID is a mandatory field. Must by unique if you have several grids on one page.
gridModel.OrdersGrid.ID = "OrdersGrid";
// Setting the DataUrl to an action (method) in the controller is required.
// This action will return the data needed by the grid
gridModel.OrdersGrid.DataUrl = Url.Action("DataRequested");
// Pass the custmomized grid model to the View
return View(gridModel);
}
// This method is called when the grid requests data. You can choose any method to call
// by setting the JQGrid.DataUrl property
public JsonResult DataRequested()
{
// Get both the grid Model and the data Model
// The data model in our case is an autogenerated linq2sql database based on Northwind.
var gridModel = new OrdersJqGridModel();
var northWindModel = new NorthwindDataContext();
// return the result of the DataBind method, passing the datasource as a parameter
// jqGrid for ASP.NET MVC automatically takes care of paging, sorting, filtering/searching, etc
return gridModel.OrdersGrid.DataBind(northWindModel.Orders);
}
}
}