Asp.net MVC使用MvcPager进行分页
2011-02-27 19:33 夜雨瞳 阅读(3229) 评论(0) 收藏 举报一、数据库表
CREATE TABLE [dbo].[T_Class]( [ID] [int] NOT NULL, [Name] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT [PK_T_Class] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] CREATE TABLE [dbo].[T_Teacher]( [ID] [int] NOT NULL, [Name] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL, [Address] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL, [Phone] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL, [Email] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL, [ClassID] [int] NOT NULL, CONSTRAINT [PK_T_Teacher] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[T_Teacher] WITH CHECK ADD CONSTRAINT [FK_ClassTeacher] FOREIGN KEY([ClassID]) REFERENCES [dbo].[T_Class] ([ID]) GO ALTER TABLE [dbo].[T_Teacher] CHECK CONSTRAINT [FK_ClassTeacher]
二、数据库数据
insert into T_Class(ID,Name)values(1,'化学1班'); insert into T_Class(ID,Name)values(2,'化学2班'); insert into T_Class(ID,Name)values(3,'计算机1班'); insert into T_Class(ID,Name)values(4,'计算机2班'); insert into T_Class(ID,Name)values(5,'机械自动化1班'); insert into T_Class(ID,Name)values(6,'机械自动化2班'); insert into T_Class(ID,Name)values(7,'生物1班'); insert into T_Class(ID,Name)values(8,'生物2班'); insert into T_Class(ID,Name)values(9,'金融1班'); insert into T_Class(ID,Name)values(10,'金融2班'); insert into T_Class(ID,Name)values(11,'美术1班'); insert into T_Class(ID,Name)values(12,'美术2班'); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(1,'陈春','江苏省','15820713331','cc@qq.com',1); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(2,'刘华','河南省','15820713332','lh@qq.com',2); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(3,'李江东','黑龙江','15820713333','ljd@qq.com',3); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(4,'叶天问','山东省','15820713334','ytw@qq.com',4); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(5,'杨海天','河北省','15820713335','sht@qq.com',5); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(6,'朱晓红','宁夏','15820713336','zxh@qq.com',6); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(7,'张天','新疆','15820713337','zt@qq.com',7); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(8,'郭静','广西省','15820713338','gj@qq.com',8); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(9,'周星星','广东省','15820713339','zxx@qq.com',9); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(10,'黄工','安徽省','15820713310','hg@qq.com',10); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(11,'胡友意','福建省','15820713311','hyy@qq.com',11); insert into T_Teacher(ID,Name,Address,Phone,Email,ClassID) values(12,'萧景','西藏','15820713312','xj@qq.com',12);
三、建立Linq

四、在Model创建ClassInformation

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace _20110223mvc.Models
{
public class ClassInformation
{
public int ID { get; set; }
public int ClassID { get; set; }
public string Name { get; set; }
public string TeacherName { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
}
}
五、在Controllers创建Page控制器
添加MvcPager.dll,并引用MvcPager的命名空间Webdiyer.WebControls.Mvc。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using _20110223mvc.Models;
//linq实体命名空间
using _20110223mvc.Models.LinqEntities;
//MvcPager.dll分页命名空间
using Webdiyer.WebControls.Mvc;
namespace _20110223mvc.Controllers
{
public class PageController : Controller
{
//
// GET: /Page/
//默认分页
private const int defaultPageSize = 5;
//
public ActionResult Index(int? id)
{
using (DBDataContext db = new DBDataContext())
{
IQueryable<ClassInformation> p = from c in db.T_Class
from d in db.T_Teacher
where c.ID == d.ClassID
select new ClassInformation { ID = c.ID, ClassID = d.ClassID, Name = c.Name, TeacherName = d.Name, Address = d.Address, Phone = d.Phone, Email = d.Email };
PagedList<ClassInformation> m = p.ToPagedList(id ?? 1, defaultPageSize);
return View(m);
}
}
public ActionResult Edit(int id)
{
using (DBDataContext db = new DBDataContext())
{
IQueryable<ClassInformation> p = from c in db.T_Class
from d in db.T_Teacher
where c.ID == d.ClassID && c.ID==id
select new ClassInformation { ID = c.ID, ClassID = d.ClassID, Name = c.Name, TeacherName = d.Name, Address = d.Address, Phone = d.Phone, Email = d.Email };
ClassInformation k = p.Single();
ViewData["k"] = k;
return View();
}
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit()
{
using (DBDataContext db = new DBDataContext())
{
T_Class q = db.T_Class.Where(o => o.ID == int.Parse(Request.Form["ID"])).Single();
q.Name = Request.Form["Name"];
T_Teacher p = db.T_Teacher.Where(o => o.ClassID == int.Parse(Request.Form["ID"])).Single();
p.Name = Request.Form["TeacherName"];
p.Phone = Request.Form["Phone"];
p.Address = Request.Form["Address"];
p.Email = Request.Form["Email"];
db.SubmitChanges();
return RedirectToAction("Index");
}
}
public ActionResult Delete(int id)
{
using (DBDataContext db = new DBDataContext())
{
T_Class p = db.T_Class.Single(q => q.ID == id);
T_Teacher teacher = db.T_Teacher.Single(q => q.ClassID == id);
db.T_Class.DeleteOnSubmit(p);
db.T_Teacher.DeleteOnSubmit(teacher);
db.SubmitChanges();
}
return RedirectToAction("Index");
}
}
}
六、添加视图Index和Edit.
Index:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<PagedList<ClassInformation>>" %>
<%@ Import Namespace="_20110223mvc" %>
<%@ Import Namespace="_20110223mvc.Models" %>
<%@ Import Namespace="Webdiyer.WebControls.Mvc" %>
<!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 runat="server">
<title>asp.net MVC分页</title>
<%--样式表--%>
<link href="http://www.cnblogs.com/Content/Site.css" rel="stylesheet" type="text/css" />
<%--JQuery和Ajax--%>
<%--<script src="http://www.cnblogs.com/Scripts/MicrosoftAjax.js" type="text/javascript"></script>--%>
<script src="http://www.cnblogs.com/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<%--<script src="http://www.cnblogs.com/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>--%>
</head>
<body>
<div class="divfloat">
<div id="divpages">
<table>
<tr>
<th>
班级
</th>
<th>
老师
</th>
<th>
地址
</th>
<th>
电话号码
</th>
<th>
邮箱
</th>
<th>
操作
</th>
</tr>
<%foreach (ClassInformation od in Model)
{
%>
<tr>
<td>
<%=od.Name.ToString() %>
</td>
<td>
<%=od.TeacherName.ToString() %>
</td>
<td>
<%=od.Address.ToString() %>
</td>
<td>
<%=od.Phone.ToString() %>
</td>
<td>
<%=od.Email.ToString() %>
</td>
<td>
<%= Html.ActionLink("编辑", "Edit", new { id=od.ID })%>
<%= Html.ActionLink("删除", "Delete", new { id = od.ID })%>
</td>
</tr>
<%
} %>
</table>
<%-- <%=Html.AjaxPager(Model, new PagerOptions() {
CssClass = "pages",
PageIndexParameterName = "id",
ShowMorePagerItems = false,
FirstPageText = "首页",
LastPageText = "末页",
PrevPageText = "上一页",
NextPageText = "下一页",
CurrentPagerItemWrapperFormatString = "<span class=\"cpb\">{0}</span>",
ShowPageIndexBox = true,
NumericPagerItemWrapperFormatString = "<span class=\"item\">{0}</span>"
},
new AjaxOptions() { UpdateTargetId = "divpages" })%>--%>
<%=Html.Pager(Model, new PagerOptions
{
PageIndexParameterName = "id",
CssClass = "pages",
FirstPageText = "首页",
LastPageText = "末页",
PrevPageText = "上一页",
NextPageText = "下一页",
CurrentPagerItemWrapperFormatString = "<span class=\"cpb\">{0}</span>",
ShowPageIndexBox = true,
NumericPagerItemWrapperFormatString = "<span class=\"item\">{0}</span>",
PageIndexBoxType = PageIndexBoxType.DropDownList,
ShowGoButton = false,PageIndexBoxWrapperFormatString=" 转到{0}",SeparatorHtml = "" })%>
</div>
</div>
</body>
</html>
Edit:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<%@ Import Namespace="_20110223mvc.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 runat="server">
<title>修改个人信息</title>
<style type="text/css">
dt
{
float:left;
}
dd
{
margin:15px 0px 15px 100px;
}
</style>
</head>
<body>
<div>
<% ClassInformation k = ViewData["k"] as ClassInformation; %>
<% Html.BeginForm("Edit", "Page", FormMethod.Post); %>
<%=Html.Hidden("ID",k.ID ) %>
<dl>
<dt>
<label>
班级</label></dt>
<dd>
<%=Html.TextBox("Name",k.Name) %></dd>
<dt>
<label>
老师</label></dt>
<dd>
<%=Html.TextBox("TeacherName",k.TeacherName) %></dd>
<dt>
<label>
地址</label></dt>
<dd>
<%=Html.TextBox("Address",k.Address) %></dd>
<dt>电话号码</dt>
<dd>
<%=Html.TextBox("Phone",k.Phone) %></dd>
<dt>邮箱</dt>
<dd>
<%=Html.TextBox("Email",k.Email) %></dd>
</dl>
<input type="submit" value="保存" />
<input type ="button"" value="返回" onclick="document.location.href= 'http://www.cnblogs.com/Page/Index'" />
</div>
</body>
</html>
七、运行效果




八、总结
MvcPager功能挺强大的,资料也相当地丰富。
MvcPager下载网址:http://mvcpager.codeplex.com/releases/view/47201
Demo的示例网址:http://en.webdiyer.com/
九、下载相关
MvcPager.dll下载:https://files.cnblogs.com/yongfeng/MvcPager.rar
一、数据库表CREATE TABLE [dbo].[T_Class]( [ID] [int] NOT NULL, [Name] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT [PK_T_Class] PRIMARY KEY CLUSTERED ( [ID] ASC)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]CREATE TABLE [dbo].[T_Teacher]( [ID] [int] NOT NULL, [N.添加MvcPager.dll,并引用MvcPager的命名空间Webdiyer.WebControls.Mvc。

浙公网安备 33010602011771号