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 。你也可以将其放在子文件夹中。在本例中,我们将它放置在 Model/Grid 文件夹中,创建名为 OrdersJqGridModel.cs 的Model class 。

一旦我们设置好 OrdersJqGridModel.cs 文件,我们就能创建一个 grid 实例。

在此之前需要引用 Trirand.Web.Mvc.dll Trirand.Web.Mvc

jqGrid model 的类型是 JQGrid。

你只需要做的唯一的事情,就是明确定义 columns。

所有的 Model 设置,都能在 Controller 中被覆盖,包括 添加,移除,改变列属性,改变 grid 属性等。

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 ,只需要在 Views文件夹上右键,选择 添加新 View。你也可以将它放置在子文件夹中。在本例中,我们将其放置在 View/Grid 中,将其命名为 PerformanceLinq 。

选中 创建强类型的View,和刚刚创建的Model类。这样我们就能引用 Model ,并将它作为参数传递给 View HtmlHelper。

首先,我们需要引入 jqGrid 的命名空间

<%@ Import Namespace="JQGridMVCExamples.Models" %>

然后添加外部grid 脚本和css 依赖。

<head id="Head1" runat="server"> <title>Performance Linq</title> <script type="text/javascript" src="Scripts/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="Scripts/jqgrid/i18n/grid.locale-en.js"></script> <script type="text/javascript" src="Scripts/jqgrid/jquery.jqGrid.min.js"></script> <link rel="stylesheet" type="text/css" href="Content/themes/redmond/jquery-ui-1.7.1.custom.css"/> <link rel="stylesheet" type="text/css" href="Content/themes/ui.jqgrid.css"/> </head>

最后使用 jqGrid HtmlHelper ,将grid 放置在页面上我们需要的位置。HtmlHelper 会以引用的方式获得 Model ,并使用它,基于它渲染gird(你依然能在Controller 中改变 Model 的默认项)。HtmlHelper 的第一个参数是 Model (从强类型 View 传递来),第二个参数是 grid 的 ID 。

<%= Html.Trirand().JQGrid(Model.OrdersGrid, "JQGrid1") %>

最后,页面看起来像这样

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<JQGridMVCExamples.Models.OrdersJqGridModel>"%> <%@ Import Namespace="Trirand.Web.Mvc"%> <%@ Import Namespace="JQGridMVCExamples.Models"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>Performance Linq</title> <script type="text/javascript" src="Scripts/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="Scripts/jqgrid/i18n/grid.locale-en.js"></script> <script type="text/javascript" src="Scripts/jqgrid/jquery.jqGrid.min.js"></script> <link rel="stylesheet" type="text/css" href="Content/themes/redmond/jquery-ui-1.7.1.custom.css"/> <link rel="stylesheet" type="text/css" href="Content/themes/ui.jqgrid.css"/> </head> <body> <div> <%= Html.Trirand().JQGrid(Model.OrdersGrid, "JQGrid1") %> </div> <br /><br /> <div> <% Html.RenderPartial("CodeTabs"); %> </div> </body> </html>

4 创建 Controller 演练

在 Controller/Grid 文件夹下新建 PerformanceLinqController 。

有至少两个Action 需要为 grid 定义。setup action,它用来设置 Model。data requested action,grid从客户端发来数据,告诉服务端代码需要执行的数据绑定。

这里有一个完整的Controller,包含所有的 action。

PerformanceLinq action 是用来设置grid 的 action。这里你能得到jqGrid Model 的引用,并改变一些设置。如果没有设置被改变,那么默认的设置回被使用。

DataUrl 需要设置 Action,它关心 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);
}
}
}

【jqGrid for ASP.NET MVC Documentation】.学习笔记.2.jqGrid Model-View-Controller 分离的更多相关文章

  1. 【jqGrid for ASP.NET MVC Documentation】.学习笔记.4.性能

    1 HTML / ViewState 大小 1.1 HTML 大小 jqGrid for ASP.NET MVC 使用最佳的客户端渲染,意味着 HTML gird 的 尺寸是最小的.事实上,只有 gr ...

  2. 【jqGrid for ASP.NET MVC Documentation】.学习笔记.1.介绍

    1 介绍 jqGrid for ASP.NET MVC 是一个服务端组件. 专为MVC    分隔 model ,view , controller 的原则,完全观察者模式 非常快的速度    仅仅很 ...

  3. 【jqGrid for ASP.NET MVC Documentation】.学习笔记.7.搜索过滤数据

    1 基础 搜索和过滤功能,是使用确定的条件,查找匹配行数据.jqGrid提供几种搜索模式: Search Dialog 单搜索选项 Search Dialog 多搜索选项 ToolBar Search ...

  4. 【jqGrid for ASP.NET MVC Documentation】.学习笔记.3.本地化语言包

    1 引用本地化语言包 在 js/i18n 文件夹中,提供了大量预定义的语言包.它包括为所有字符串定义的,包括消息,标题,分页信息,搜索/添加/删除 的对话框 文本等. 在jQuery库文件后,在jqG ...

  5. ASP.NET MVC Routing学习笔记(一)

    Routing在ASP.NET MVC中是非常核心的技术,属于ASP.NET MVC几大核心技术之一,在使用Routing之前,得先引入System.Web.Routing,但其实不用这么麻烦,因为在 ...

  6. (转)Qt Model/View 学习笔记 (一)——Qt Model/View模式简介

    Qt Model/View模式简介 Qt 4推出了一组新的item view类,它们使用model/view结构来管理数据与表示层的关系.这种结构带来的 功能上的分离给了开发人员更大的弹性来定制数据项 ...

  7. 【jqGrid for ASP.NET MVC Documentation】.学习笔记.6.分层

    1 两级分层 每个父 grid 的行,都能有子 grid .这被叫做 层次,它用来显示相关的 表,主信息 –> 明细信息等. } 一旦你为 父子 grid 都定义了 Models ,下一步就是设 ...

  8. 精通 ASP.NET MVC 4 学习笔记(一)

    这里记录着从 P132 到 P192 的内容.水分很足,大部分是书上的代码,我只加了一些基于我自己的理解的能帮助初学者看懂的注释,并且把书中的部分内容做了一些的拓展. 建立数据层 设置 DI 容器 / ...

  9. ASP.NET MVC过滤器学习笔记

    1.过滤器的两个特征 1.他是一种特性,可以引用到控制器类和Action方法上.比如下图 这里控制器类和action方法都引用了过滤器,这个过滤器是用来做授权的 2.特征继承自FilterAttrib ...

随机推荐

  1. Android RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  2. SQLSERVER执行计划详解

    序言 本篇主要目的有二: 1.看懂t-sql的执行计划,明白执行计划中的一些常识. 2.能够分析执行计划,找到优化sql性能的思路或方案. 如果你对sql查询优化的理解或常识不是很深入,那么推荐几骗博 ...

  3. iOS系统版本简介

    iOS系统版本简介 ⽬目前iOS设备所⽀支持的最主流操作系统是iOS6,⼤大概占了93%,⽽而使 ⽤用iOS5的iOS设备⼤大概占6%,剩下的只有1%.( 根据苹果的官⽅方数据 ) 从iOS1到现在的 ...

  4. PostgreSQL Type的创建与Type在函数中的使用

    postgres=# create type complex as(postgres(# r double precision,postgres(# i double precisionpostgre ...

  5. PHP判断手机号码是否合法

    <html> <head> <script language="JavaScript"> function checkMobile(input) ...

  6. nyist 599 奋斗的小蜗牛

    http://acm.nyist.net/JudgeOnline/problem.php?pid=599 奋斗的小蜗牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 ...

  7. JS不兼容减号,css属性转驼峰写法

    <script> function changeFormat(str) { return str.replace(/-(\w)/g, function(k, r) { return r.t ...

  8. SVN空格问题的解决方法

    (注意:如果你的路径里有空格记得要在binpath的头尾用转义字符/"把整个个binpath框起来,D:\SVN\svnroot指svn资源库根目录) displayname指服务名称 de ...

  9. 继承 Bean 配置

    继承 Bean 配置 Spring 允许继承 bean 的配置, 被继承的 bean 称为父 bean. 继承这个父 Bean 的 Bean 称为子 Bean子 Bean 从父 Bean 中继承配置, ...

  10. Listview和Gridview自定义分割线

    1,ListView和GridView中的每一个条目都有分割线,属性android:footerDividersEnabled表示是否显示分割线,默认是为true,即可见.可以自定义的设置分割线的颜色 ...