ASP.NET MVC 3 Beta初体验之WebGrid

  ASP.NET MVC 3 Beta中除了推出一种新的视图引擎Razor。还推出了几种新的HtmlHelper。我比较关注的是WebGrid,这篇文章将介绍一下WebGrid的使用。WebGrid提供了分页和排序的功能,在此之前在MVC中分页和排序时需要自己去写的。这篇文章将分别介绍在aspx视图引擎和Razor视图引擎中如何使用它。

  我通过ADO.NET Entity Data Model从NORTHWND的Products中表中取数据。在Controller中取数据:

public class HomeController : Controller

{

public ActionResult Index()

{

NORTHWNDEntities entity = new NORTHWNDEntities();

return View( entity.Products.ToList());

}

}

  在aspx视图引擎中使用WebGrid代码如下:

<div id="grid">

<% var grid = new WebGrid(source: Model, defaultSort: "ProductName", rowsPer
Page: 5); %>

<%=grid.GetHtml(

tableStyle: "grid",

headerStyle: "head",

alternatingRowStyle: "alt",

columns: grid.Columns(

grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ProductID })),

grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", null, new { onclick = string.Format("deleteRecord('Employee', '{0}')", item.ProductID), @class = "Delete", href = "JavaScript:void(0)" })),

grid.Column("ProductName","产品名称"),

grid.Column("QuantityPerUnit","每单位数量"),

grid.Column("UnitPrice","单价"),

grid.Column("UnitsInStock", "库存单位"),

grid.Column("UnitsOnOrder","订单单位"),

grid.Column("ReorderLevel","重新排序级别"),

grid.Column("Discontinued","已停产")

)

)

%>

</div>

  在Razor中使用WebGrid代码如下:

<div id="grid">

@{

var grid = new WebGrid(source: Model,

defaultSort: "ProductName",

rowsPerPage: 10);

}

@grid.GetHtml(

tableStyle: "grid",

headerStyle: "head",

alternatingRowStyle: "alt",

columns: grid.Columns(

grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ProductID })),

grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", null, new { onclick = string.Format("deleteRecord('Product', '{0}')", item.ProductID), @class = "Delete", href = "JavaScript:void(0)" })),

grid.Column("ProductName","产品名称"),

grid.Column("QuantityPerUnit","每单位数量"),

grid.Column("UnitPrice","单价"),

grid.Column("UnitsInStock", "库存单位"),

grid.Column("UnitsOnOrder","订单单位"),

grid.Column("ReorderLevel","重新排序级别"),

grid.Column("Discontinued","已停产")

)

)

</div>

  WebGrid构造函数如下:

public WebGrid(IEnumerable<dynamic> source, IEnumerable<string> columnNames = null, string defaultSort = null, int rowsPerPage = 10, bool canPage = true, bool canSort = true, string ajaxUpdate
ContainerId = null, string fieldNamePrefix = null, string pageFieldName = null, string selectionFieldName = null, string sortFieldName = null, string sortDirectionFieldName = null);

  常见参数意思是:

  1、source 表示数据源

  2、columnNames表示显示的列

  3、defaultSort 默认按什么排序

  4、rowsPerPage 每页多少行数据

  5、canPage 是否能排序

  上面两段代码的意思是定义了一个既分页又能排序的grid。运行:

  在看看两个view的完整代码:

  aspx:

<%@ Page Title=""
Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<WebGridAspx.Models.Products>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

产品列表

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<script type="text/javascript">

function deleteRecord(a, b) {

alert("删除:"+b);

}

</script>

<h2>产品列表</h2>

<div id="grid">

<% var grid = new WebGrid(source: Model, defaultSort: "ProductName", rowsPerPage: 5); %>

<%=grid.GetHtml(

tableStyle: "grid",

headerStyle: "head",

alternatingRowStyle: "alt",

columns: grid.Columns(

grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ProductID })),

grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", null, new { onclick = string.Format("deleteRecord('Employee', '{0}')", item.ProductID), @class = "Delete", href = "JavaScript:void(0)" })),

grid.Column("ProductName","产品名称"),

grid.Column("QuantityPerUnit","每单位数量"),

grid.Column("UnitPrice","单价"),

grid.Column("UnitsInStock", "库存单位"),

grid.Column("UnitsOnOrder","订单单位"),

grid.Column("ReorderLevel","重新排序级别"),

grid.Column("Discontinued","已停产")

)

)

%>

</div>

</asp:Content>

  Razor:

代码 @model List<WebGridRazor.Models.Products>

@{

View.Title = "产品列表";

}

<p>

<h2>产品列表</h2>

<div id="grid">

@{

var grid = new WebGrid(source: Model,

defaultSort: "ProductName",

rowsPerPage: 3);

}

@grid.GetHtml(

tableStyle: "grid",

headerStyle: "head",

alternatingRowStyle: "alt",

columns: grid.Columns(

grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.ProductID })),

grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", null, new { onclick = string.Format("deleteRecord('Product', '{0}')", item.ProductID), @class =

时间: 2024-10-24 14:50:23

ASP.NET MVC 3 Beta初体验之WebGrid的相关文章

一起谈.NET技术,ASP.NET MVC 3 Beta初体验之WebGrid

ASP.NET MVC 3 Beta中除了推出一种新的视图引擎Razor.还推出了几种新的HtmlHelper.我比较关注的是WebGrid,这篇文章将介绍一下WebGrid的使用.WebGrid提供了分页和排序的功能,在此之前在MVC中分页和排序时需要自己去写的.这篇文章将分别介绍在aspx视图引擎和Razor视图引擎中如何使用它. 我通过ADO.NET Entity Data Model从NORTHWND的Products中表中取数据.在Controller中取数据: public clas

ASP.NET MVC 3 Beta初体验之超酷的Chart

前面一篇文章:ASP.NET MVC 3 Beta初体验之WebGrid介绍了WebGrid控件的使用,ASP.NET MVC 3 Beta中才内置Chart的.这篇文章中将介绍Chart的使用.包括Chart数据源的配置.Chart的显示.Chart保存三个方面.Chart是很多系统中使用, 所以在ASP.NET MVC 3 Beta初体验之中介绍它是很有必要的. 1.配置Chart的数据源 给Chart 配置数据源大概有三种方式. 第一种:使用数组示例:Controller代码: publi

一起谈.NET技术,ASP.NET MVC 3 Beta初体验之超酷的Chart

前面一篇文章:ASP.NET MVC 3 Beta初体验之WebGrid介绍了WebGrid控件的使用,ASP.NET MVC 3 Beta中才内置Chart的.这篇文章中将介绍Chart的使用.包括Chart数据源的配置.Chart的显示.Chart保存三个方面.Chart是很多系统中使用,所以在ASP.NET MVC 3 Beta初体验之中介绍它是很有必要的. 1.配置Chart的数据源 给Chart配置数据源大概有三种方式. 第一种:使用数组 示例: Controller代码: publi

一起谈.NET技术,ASP.NET MVC 3 Beta初体验之超酷的Chart:3D效果

在前一篇文章:ASP.NET MVC 3 Beta初体验之超酷的Chart中介绍了Chart的使用,但是没有介绍到3D效果.这篇文章将介绍一下Chart的3D效果的展示.声明一点的是:这个Chart控件可能没有一些开源或者不开源,收费或者不收费的组件那般强大,我相信未来这个控件会越来越强大的.废话不多说了,看下如何展示Chart的3D效果. 显示3D的效果,微软给了我们两种解决方案.一种是使用他自带的样式,一种是自己配置一个显示样式的XML. 第一种使用自带的样式:很简单,在上一篇文章中其实有提

ASP.NET MVC 3 Beta初体验之实用的WebMail

Asp.net MVC 3 Beta中提供了非常实用发送邮件的组件:WebMail.我试用了一下,和System.Web.Mail类似.这篇文章将简单介绍一下这个组件的使用.通过分成不带附件的邮件发送和带附件的邮件发送两种情况进行讲解.用一个请求帮助的应用场景为例. 不带附件的邮件发送 首先定义Controller.EmailRequest用于请求一个发送邮件的页面,ProcessRequest用去处理发送邮件的请求,并在View中发送邮件. 代码 [HttpGet] public Action

一起谈.NET技术,ASP.NET MVC 3 Beta初体验之实用的WebMail

Asp.net MVC 3 Beta中提供了非常实用发送邮件的组件:WebMail.我试用了一下,和System.Web.Mail类似.这篇文章将简单介绍一下这个组件的使用.通过分成不带附件的邮件发送和带附件的邮件发送两种情况进行讲解.用一个请求帮助的应用场景为例. 不带附件的邮件发送 首先定义Controller.EmailRequest用于请求一个发送邮件的页面,ProcessRequest用去处理发送邮件的请求,并在View中发送邮件. 代码 [HttpGet]public ActionR

Asp.net mvc 3 beta 新特性介绍

国庆放假归来,刚好赶上asp.net mvc 3 beta发布,和大家分享点我的体验. 首先是创建项目时的选择界面的改变: 1.View Engine的变化. asp.net mvc 3中添加了Razor这个View engine. 如果你在创建的项目中同时有Index.aspx和Index.cshtml, 默认的MVC会选择aspx 的view来显示.但是你可以通过在Global.asax文件中的Application_Start方法中添加如下代码来让MVC先去执行Razor Engine的I

ASP.NET MVC 3 Beta新特性以及.Net开源的趋势----最新译文

NuPack – .NET的开源软件包管理器 NuPack是一个开源的软件包管理器,它使你在项目中能够更加容易的查找.安装和使用.NET 库.它能够和所有的.NET 项目类型很好的一起工作(包括,没有任何限制的,ASP.NET Web Forms和ASP.NET MVC). NuPack 使维护开源项目的开发者(例如, Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks, Elmah, 等等) 能够去打包他们的库,

一起谈.NET技术,ASP.NET MVC 3 Beta新特性以及.Net开源的趋势----最新译文

NuPack – .NET的开源软件包管理器 NuPack是一个开源的软件包管理器,它使你在项目中能够更加容易的查找.安装和使用.NET 库.它能够和所有的.NET 项目类型很好的一起工作(包括,没有任何限制的,ASP.NET Web Forms和ASP.NET MVC). NuPack 使维护开源项目的开发者(例如, Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks, Elmah, 等等) 能够去打包他们的库,