Asp.net MVC使用MvcPager进行分页
2011-02-27 19:33 夜雨瞳 阅读(3172) 评论(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