5.MVC+JQury+AJAX异步+增删改查和分页(完整版)

1、Model层代码

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using MvcExamples;
using System.Web.Mvc;

namespace MvcExamples.Web.Models
{
    public class StudentModels
    {
        /// <summary>
        /// 获取学生信息列表
        /// </summary>
        public List<MvcExamples.Model.Student> StudentList { get; set; }
        /// <summary>
        /// 获取教工信息列表
        /// </summary>
        public List<MvcExamples.Model.Teacher> TeacherList { get; set; }
        /// <summary>
        /// 获取学生信息列表(分页)
        /// </summary>
        public PagedList<MvcExamples.Model.Student> GetStudentList { get; set; }
    }
}

2、View层代码

1 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MvcExamples.Web.Models.StudentModels>" %>
  2 
  3 <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
  4     Index
  5 </asp:Content>
  6 <asp:Content ID="Content3" ContentPlaceHolderID="HeadContent" runat="server">
  7 
  8     <script src="http://www.cnblogs.com/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
  9     <script src="http://www.cnblogs.com/Scripts/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
 10     <script src="http://www.cnblogs.com/Scripts/windwUi/jquery-ui-1.8.1.min.js" type="text/javascript"></script>
 11     <link href="http://www.cnblogs.com/Scripts/windwUi/jquery-ui-1.8.1.custom.css" rel="stylesheet" type="text/css" />
 12     <script type="text/javascript">
 13     $(function(){
 14     
 15         //添加学生信息
 16         $('#a_add').click(function(){
 17             $('#window').dialog({ 
 18                    title: "添加学生信息",
 19                    width: 300,
 20                    height: 200,
 21                    modal: true,
 22                    buttons: { 
 23                         "取消": function() {
 24                             $(this).dialog("close"); //当点击取消按钮时,关闭窗口
 25                         }, 
 26                         "添加": function() { 
 27                             //当点击添加按钮时,获取各参数的值
 28                             var sno=$('#sno').val();
 29                             var sname=$('#sname').val();
 30                             var ssex=$('#ssex').val();
 31                             var sbirsthday=$('#sbirthday').val();
 32                             var sclass=$('#sclass').val();
 33                             $.ajax({
 34                             type:'post',
 35                             url:'/Student/AddStudent',//路径为添加方法
 36                             data:'no='+sno+'&name='+sname+'&sex='+ssex+'&birsthday='+sbirsthday+'&sclass='+sclass,//参数的个数和名字要和方法的名字保持一致
 37                             success:function(json)//返回的是Json类型的
 38                                 {
 39                                    $('#window').dialog("close"); 
 40                                    //判断是否成功
 41                                    if(json.result=="true")
 42                                    {
 43                                        $('#btn_close').click();
 44                                        alert('恭喜你,修改成功!');  
 45                                    }else{
 46                                        alert('抱歉,修改失败!');
 47                                    }
 48                                 }
 49                             });
 50                        }
 51                      } 
 52               });
 53         })
 54         
 55         //删除学生信息
 56         $('.a_delete').click(function(){
 57             //确认是否删除
 58             if(confirm("是否删除此条信息?"))
 59             {
 60                 $.ajax({
 61                     type:'post',
 62                     url:'/Student/DeleteStudent',
 63                     data:'no='+$(this).attr("sno"),//获取当前对象的属性(自定义属性)sno的值,用自定义属性保存相应需要的数据
 64                     sucess:function(json)
 65                         {
 66                             if(json.result=="true")
 67                             {
 68                                 alert("恭喜你,已成功删除!");
 69                             }else
 70                             {
 71                                 alert("抱歉,删除失败!");
 72                             }
 73                         }
 74                 })
 75             }
 76         })
 77     
 78         //修改学生信息
 79         $('.a_update').click(function(){
 80             var student=$(this);
 81             $("#sno").attr("value",student.attr("sno"));
 82             $("#sname").attr("value",student.attr("sname"));
 83             $("#ssex").attr("value",student.attr("ssex"));
 84             $("#sbirthday").attr("value",student.attr("sbirthday"));
 85             $("#sclass").attr("value",student.attr("sclass"));
 86             
 87             $('#window').dialog({ 
 88                title: "修改学生信息",
 89                width: 300,
 90                height: 200,
 91                modal: true,
 92                buttons: { 
 93                     "取消": function() {
 94                         $(this).dialog("close"); 
 95                     }, 
 96                     "修改": function() { 
 97                         var sno=$('#sno').val();
 98                         var sname=$('#sname').val();
 99                         var ssex=$('#ssex').val();
100                         var sbirsthday=$('#sbirthday').val();
101                         var sclass=$('#sclass').val();
102                         $.ajax({
103                         type:'post',
104                         url:'/Student/UpdateStudent',
105                         data:'no='+sno+'&name='+sname+'&sex='+ssex+'&birsthday='+sbirsthday+'&sclass='+sclass,
106                         success:function(json)
107                             {
108                                $('#window').dialog("close"); 
109                                if(json.result=="true")
110                                {
111                                    $('#btn_close').click();
112                                    alert('恭喜你,修改成功!');  
113                                }else{
114                                    alert('抱歉,修改失败!');
115                                }
116                             }
117                         });
118                    }
119                  } 
120              });      
121         });
122         
123     })
124     </script>
125 
126 </asp:Content>
127 <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
128     <h2>
129         MVC 演示</h2>
130     <table>
131         <thead>
132             <tr>
133                 <td>学生表</td>
136             </tr>
137             <tr>
138                 <td>学号</td>
141                 <td> 姓名</td>
144                 <td>性别 </td>
147                 <td>生日 </td>
150                 <td> 班级 </td>
153                 <td> 操作</td>
156             </tr>
157         </thead>
158         <tbody>
159             <%foreach (MvcExamples.Model.Student student in Model.GetStudentList)
160               {%>
161             <tr>
162                 <td>
163                     <%=student.sno %>
164                 </td>
165                 <td>
166                     <%=student.sname %>
167                 </td>
168                 <td>
169                     <%=student.ssex %>
170                 </td>
171                 <td>
172                     <%=student.sbirthday %>
173                 </td>
174                 <td>
175                     <%=student.sclass %>
176                 </td>
177                 <td>
178                 <a href="javascript:void(0);" class="a_update" sno="<%=student.sno %>" sname="<%=student.sname %>" ssex="<%=student.ssex %>"
179                         sbirthday="<%=student.sbirthday %>" sclass="<%=student.sclass %>">修改</a>
180                     &nbsp;&nbsp
181                  <a href="javascript:void(0);" class="a_delete" sno="<%=student.sno %>">删除</a>
182                 </td>
183             </tr>
184             <%  } %>
185         </tbody>
186         <tfoot>
187             <tr>
188                 <td>
189                     全选
190                 </td>
191                 <td colspan="5" style="text-align: right;">
192                     <a href="javascript:void(0);" id="a_add">添加</a>
193                 </td>
194             </tr>
195         </tfoot>
196     </table>
197     <%=Html.MikePager(Model.GetStudentList)%>
198     <br />
199     <table>
200         <thead>
201             <tr>
202                 <td> 学生表</td>
205             </tr>
206             <tr>
207                 <td> 学号</td>
<td>姓名</td> 213 <td> 性别</td> 216 <td> 生日</td> 219 <td> 班级</td> 222 </tr> 223 </thead> 224 <tbody> 225 <%foreach (MvcExamples.Model.Student student in Model.StudentList) 226 {%> 227 <tr> 228 <td> 229 <%=student.sno %> 230 </td> 231 <td> 232 <%=student.sname %> 233 </td> 234 <td> 235 <%=student.ssex %> 236 </td> 237 <td> 238 <%=student.sbirthday %> 239 </td> 240 <td> 241 <%=student.sclass %> 242 </td> 243 </tr> 244 <% } %> 245 </tbody> 246 </table> 247 <br /> 248 <table> 249 <thead> 250 <tr> 251 <td> 老师表</td> 254 </tr> 255 <tr> 256 <td>编号</td> 259 <td>姓名</td> 262 <td> 性别</td> 265 <td>生日</td> 268 <td> 职称</td> 271 <td> 所在部门</td> 274 </tr> 275 </thead> 276 <tbody> 277 <%foreach (MvcExamples.Model.Teacher teacher in Model.TeacherList)
{%> 279 <tr> 280 <td> <%=teacher.tno%> </td> 283 <td> <%=teacher.tname%></td> 286 <td> <%=teacher.tsex%> </td> 289 <td> <%=teacher.tbirthday%></td> 292 <td> <%=teacher.prof%></td> 295 <td> <%=teacher.depart%> </td> 298 </tr> 299 <% } %> 300 </tbody> 301 </table> 302 303 <div id="window" style="display:none;"> 304 <input type="hidden" id="sno" name="sno" value="" /> 305 姓名:<input type="text" id="sname" name="sname" /><br /> 306 性别:<input type="text" id="ssex" name="ssex" /><br /> 307 生日:<input type="text" id="sbirthday" name="sbirthday" onClick = "WdatePicker()" /><br /> 308 班级:<input type="text" id="sclass" name="sclass" /><br /> 309 </div> 310 </asp:Content>

3、Controller层代码

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Web.Mvc;
  6 using System.Web.Mvc.Ajax;
  7 
  8 namespace MvcExamples.Web.Controllers
  9 {
 10     public class StudentController : Controller
 11     {
 12         //
 13         // GET: /Student/
 14 
 15         MvcExamples.BLL.Student _Student = new MvcExamples.BLL.Student();
 16         MvcExamples.BLL.Teacher _Teacher = new MvcExamples.BLL.Teacher();
 17         /// <summary>
 18         /// 演示
 19         /// </summary>
 20         /// <param name="pi"></param>
 21         /// <param name="sclass"></param>
 22         /// <returns></returns>
 23         public ActionResult Index(int? pi, string sclass)
 24         {
 25             int PageIndex = pi ?? 1;
 26             int PageSize = 5;
 27             string sClass = sclass == null ? "95031" : sclass;
 28             MvcExamples.Web.Models.StudentModels _StudentModels = new MvcExamples.Web.Models.StudentModels();
 29             _StudentModels.StudentList = _Student.GetModelList("sclass=" + sClass);
 30             _StudentModels.TeacherList = _Teacher.GetModelList("tsex='男'");
 31             _StudentModels.GetStudentList = new PagedList<MvcExamples.Model.Student>(_Student.GetModelList("sclass=" + sClass).AsQueryable(), PageIndex, PageSize);
 32             return View(_StudentModels);//返回一个Model
 33         }
 34         /// <summary>
 35         /// 修改学生信息
 36         /// </summary>
 37         /// <param name="no"></param>
 38         /// <param name="name"></param>
 39         /// <param name="sex"></param>
 40         /// <param name="birsthday"></param>
 41         /// <param name="sclass"></param>
 42         /// <returns></returns>
 43         public ActionResult UpdateStudent(string no, string name, string sex, string birsthday, string sclass)
 44         {
 45             MvcExamples.Model.Student _student = new MvcExamples.Model.Student();
 46             _student.sno = no;
 47             _student.sname = name;
 48             _student.ssex = sex;
 49             _student.sbirthday = Convert.ToDateTime(birsthday);
 50             _student.sclass = sclass;
 51 
 52             _Student.Update(_student);           
 53 
 54             JsonResult json = new JsonResult();
 55             json.Data = new
 56             {
 57                 result = "true"
 58             };
 59             return json;
 60         }
 61         /// <summary>
 62         /// 删除学生信息
 63         /// </summary>
 64         /// <param name="no"></param>
 65         /// <returns></returns>
 66         public ActionResult DeleteStudent(string no)
 67         {
 68             bool IsDelete= _Student.Delete(no);
 69             JsonResult json = new JsonResult();
 70             return json;
 71             if (IsDelete)
 72             {
 73                 json.Data = new
 74                 {
 75                     result = "true"
 76                 };
 77             }
 78             else
 79             {
 80                 json.Data = new
 81                 {
 82                     result ="false"
 83                 };
 84             }
 85             return json;
 86         }
 87         /// <summary>
 88         /// 添加学生信息
 89         /// </summary>
 90         /// <param name="no"></param>
 91         /// <param name="name"></param>
 92         /// <param name="sex"></param>
 93         /// <param name="birsthday"></param>
 94         /// <param name="sclass"></param>
 95         /// <returns></returns>
 96         public ActionResult AddStudent(string no, string name, string sex, string birsthday, string sclass)
 97         {
 98             MvcExamples.Model.Student _student = new MvcExamples.Model.Student();
 99             _student.sno = no;
100             _student.sname = name;
101             _student.ssex = sex;
102             _student.sbirthday = Convert.ToDateTime(birsthday);
103             _student.sclass = sclass;
104 
105             _Student.Add(_student);
106 
107             JsonResult json = new JsonResult();
108             json.Data = new
109             {
110                 result = "true"
111             };
112             return json;
113         }
114 
115         /// <summary>
116         /// 提供弹出窗口的数据
117         /// </summary>
118         /// <param name="id"></param>
119         /// <returns></returns>
120         public ActionResult WindowData(int id)
121         {
122             JsonResult json = new JsonResult();
123             //这里给json数据(这里只是演示,下面数据是模拟的)
124             json.Data = new
125             {
126                 name = "张三",
127                 sex = ""
128             };
129             return json;
130         }
131 
132     }
133 }

4、两个分页辅助类PagedList和MikePagerHtmlExtensions
PagedList辅助类

复制代码
  1 using System;
  2 using System.Data;
  3 using System.Configuration;
  4 using System.Linq;
  5 using System.Web;
  6 using System.Web.Security;
  7 using System.Web.UI;
  8 using System.Web.UI.HtmlControls;
  9 using System.Web.UI.WebControls;
 10 using System.Web.UI.WebControls.WebParts;
 11 using System.Xml.Linq;
 12 using System.Collections.Generic;
 13 using System.Collections.Specialized;
 14 
 15 namespace System.Web.Mvc
 16 {
 17     public interface IPagedList
 18     {
 19         int TotalPage //总页数
 20         {
 21             get;
 22         }
 23 
 24         int TotalCount
 25         {
 26             get;
 27             set;
 28         }
 29 
 30         int PageIndex
 31         {
 32             get;
 33             set;
 34         }
 35 
 36         int PageSize
 37         {
 38             get;
 39             set;
 40         }
 41 
 42         bool IsPreviousPage
 43         {
 44             get;
 45         }
 46 
 47         bool IsNextPage
 48         {
 49             get;
 50         }
 51     }
 52 
 53     public class PagedList<T> : List<T>, IPagedList
 54     {
 55         public PagedList(IQueryable<T> source, int? index, int? pageSize)
 56         {
 57             if (index == null) { index = 1; }
 58             if (pageSize == null) { pageSize = 10; }
 59             this.TotalCount = source.Count();
 60             this.PageSize = pageSize.Value;
 61             this.PageIndex = index.Value;
 62             this.AddRange(source.Skip((index.Value - 1) * pageSize.Value).Take(pageSize.Value));
 63         }
 64 
 65         public int TotalPage
 66         {
 67             get { return (int)System.Math.Ceiling((double)TotalCount / PageSize); }
 68         }
 69 
 70         public int TotalCount
 71         {
 72             get;
 73             set;
 74         }
 75         /// <summary>
 76 /// 
 77 /// </summary>
 78         public int PageIndex
 79         {
 80             get;
 81             set;
 82         }
 83 
 84         public int PageSize
 85         {
 86             get;
 87             set;
 88         }
 89 
 90         public bool IsPreviousPage
 91         {
 92             get
 93             {
 94                 return (PageIndex > 1);
 95             }
 96         }
 97 
 98         public bool IsNextPage
 99         {
100             get
101             {
102                 return ((PageIndex) * PageSize) < TotalCount;
103             }
104         }
105 
106     }
107 
108     public static class Pagination
109     {
110         public static PagedList<T> ToPagedList<T>(this IOrderedQueryable<T> source, int? index, int? pageSize)
111         {
112             return new PagedList<T>(source, index, pageSize);
113         }
114 
115         public static PagedList<T> ToPagedList<T>(this IOrderedQueryable<T> source, int? index)
116         {
117             return new PagedList<T>(source, index, 10);
118         }
119 
120         public static PagedList<T> ToPagedList<T>(this IQueryable<T> source, int? index, int? pageSize)
121         {
122             return new PagedList<T>(source, index, pageSize);
123         }
124 
125         public static PagedList<T> ToPagedList<T>(this IQueryable<T> source, int? index)
126         {
127             return new PagedList<T>(source, index, 10);
128         }
129     }
130 }

MikePagerHtmlExtensions辅助类

1 using System;
  2 using System.Data;
  3 using System.Configuration;
  4 using System.Linq;
  5 using System.Web;
  6 using System.Web.Security;
  7 using System.Web.UI;
  8 using System.Web.UI.HtmlControls;
  9 using System.Web.UI.WebControls;
 10 using System.Web.UI.WebControls.WebParts;
 11 using System.Xml.Linq;
 12 using System.Web.Mvc;
 13 using System.Web.Routing;
 14 using System.Text;
 15 
 16 namespace System.Web.Mvc
 17 {
 18     public static class MikePagerHtmlExtensions
 19     {
 20         
 21         #region MikePager 分页控件
 22 
 23         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data)
 24         {
 25             string actioinName = html.ViewContext.RouteData.GetRequiredString("action");
 26             return MikePager<T>(html, data, actioinName);
 27         }
 28 
 29         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, object values)
 30         {
 31             string actioinName = html.ViewContext.RouteData.GetRequiredString("action");
 32             return MikePager<T>(html, data, actioinName, values);
 33         }
 34 
 35         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action)
 36         {
 37             return MikePager<T>(html, data, action, null);
 38         }
 39 
 40         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, object values)
 41         {
 42             string controllerName = html.ViewContext.RouteData.GetRequiredString("controller");
 43             return MikePager<T>(html, data, action, controllerName, values);
 44         }
 45 
 46         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, string controller, object values)
 47         {
 48             return MikePager<T>(html, data, action, controller, new RouteValueDictionary(values));
 49         }
 50 
 51         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, RouteValueDictionary values)
 52         {
 53             string actioinName = html.ViewContext.RouteData.GetRequiredString("action");
 54             return MikePager<T>(html, data, actioinName, values);
 55         }
 56 
 57         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, RouteValueDictionary values)
 58         {
 59             string controllerName = html.ViewContext.RouteData.GetRequiredString("controller");
 60             return MikePager<T>(html, data, action, controllerName, values);
 61         }
 62 
 63         public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, string controller, RouteValueDictionary valuedic)
 64         {
 65             int start = (data.PageIndex - 5) >= 1 ? (data.PageIndex - 5) : 1;
 66             int end = (data.TotalPage - start) > 9 ? start + 9 : data.TotalPage;
 67 
 68             RouteValueDictionary vs = valuedic == null ? new RouteValueDictionary() : valuedic;
 69 
 70             var builder = new StringBuilder();
 71             builder.AppendFormat("<div class=\"mike_mvc_pager\">");
 72 
 73             if (data.IsPreviousPage)
 74             {
 75                 vs["pi"] = 1;
 76                 builder.Append(Html.LinkExtensions.ActionLink(html, "首页", action, controller, vs, null));
 77                 builder.Append("&nbsp;");
 78                 vs["pi"] = data.PageIndex - 1;
 79                 builder.Append(Html.LinkExtensions.ActionLink(html, "上一页", action, controller, vs, null));
 80                 builder.Append("&nbsp;");
 81 
 82             }
 83 
 84             for (int i = start; i <= end; i++) //前后各显示5个数字页码
 85             {
 86                 vs["pi"] = i;
 87                 if (i == data.PageIndex)
 88                 {
 89                     builder.Append("<font class='thispagethis'>" + i.ToString() + "</font>&nbsp;");
 90                 }
 91                 else
 92                 {
 93                     builder.Append("&nbsp;");
 94 
 95                     builder.Append(Html.LinkExtensions.ActionLink(html, i.ToString(), action, controller, vs, null));
 96                 }
 97             }
 98 
 99             if (data.IsNextPage)
100             {
101                 builder.Append("&nbsp;");
102 
103                 vs["pi"] = data.PageIndex + 1;
104                 builder.Append(Html.LinkExtensions.ActionLink(html, "下一页", action, controller, vs, null));
105                 builder.Append("&nbsp;");
106 
107 
108                 vs["pi"] = data.TotalPage;
109                 builder.Append(Html.LinkExtensions.ActionLink(html, "末页", action, controller, vs, null));
110 
111 
112             }
113             builder.Append("&nbsp;每页" + data.PageSize + "条/共" + data.TotalCount + "条 第" + data.PageIndex + "页/共" + data.TotalPage + "页 </div>");
114             return builder.ToString();
115         }
116         #endregion
117     }
118 }

 5、效果如下

 

posted @ 2016-09-05 09:37  狼牙者.net  阅读(336)  评论(1编辑  收藏  举报