【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);
        }
    }
}