写给我自己的“增删改查”

      曾经很多次的拿增删改查功能来学习编程,从winform到webform。不能说厌倦了这种重复的练习,自从上次写完一个小程序之后,总想着总结一下。

  需求:对一个医院职工的信息做增删改查,至于UI界面,由于个人审美问题,就不讲究了。

  思路:用三层管理,用html页面展示数据,通过Ajax向一般处理程序发送请求,JavaScript实现分页,用JQuery和JQueryUI实现弹窗。

  过程:

  1、在MSSqlServer新建一个数据库,建一个空表。由于个人习惯,所以手写sql,如下:

    

新建数据库并新表
 1 CREATE DATABASE [Client] 
 2 ON  
 3 ( 
 4    NAME = N'Client', 
 5    FILENAME = 'D:\database\Client.mdf' , 
 6    SIZE = 3072KB ,  
 7    MAXSIZE = 10240KB , FILEGROWTH = 10%)
 8  LOG ON 
 9 ( 
10    NAME = N'Client_log', 
11    FILENAME = 'D:\database\Client_log.ldf' ,
12    SIZE = 3072KB ,
13    MAXSIZE = 10240KB , 
14    FILEGROWTH = 10%
15 )
16 GO
17 Use Client
18 CREATE TABLE [MedClient]
19 (
20    [Id] [uniqueidentifier] NOT NULL,
21    [ClientCode] [nvarchar](10) NOT NULL,
22    [ClientName] [nvarchar](10) NOT NULL,
23    [Sex] [bit] NULL,
24    [BirthDate] [date] NOT NULL,
25    [ChuFangPermit] [nvarchar](1) NULL,
26    [DuMaPermit] [nvarchar](1) NULL,
27    [JingMaPermit] [nvarchar](1) NULL,
28    [IsDel] [bit] NULL
29 )

   2、在VS2010中建立三层,手头没有代码生成器,只好手敲。

           

Model代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Model
 7 {
 8     public partial  class MedClientModel
 9     {
10         Guid id;
11 
12         public Guid Id
13         {
14             get { return id; }
15             set { id = value; }
16         }
17         //员工编号
18         string clientCode;
19 
20         public string ClientCode
21         {
22             get { return clientCode; }
23             set { clientCode = value; }
24         }
25         //员工姓名
26         string clientName;
27 
28         public string ClientName
29         {
30             get { return clientName; }
31             set { clientName = value; }
32         }
33         //性别
34         bool? sex;
35 
36         public bool? Sex
37         {
38             get { return sex; }
39             set { sex = value; }
40         }
41         //出生日期
42         DateTime birthDate;
43 
44         public DateTime BirthDate
45         {
46             get { return birthDate; }
47             set { birthDate = value; }
48         }
49         //处方权限
50         string chuFangPermit;
51 
52         public string ChuFangPermit
53         {
54             get { return chuFangPermit; }
55             set { chuFangPermit = value; }
56         }
57         //毒麻权限
58         string duMaPermit;
59 
60         public string DuMaPermit
61         {
62             get { return duMaPermit; }
63             set { duMaPermit = value; }
64         }
65         //精麻权限
66         string jingMaPermit;
67 
68         public string JingMaPermit
69         {
70             get { return jingMaPermit; }
71             set { jingMaPermit = value; }
72         }
73         //是否删除
74         bool isDel;
75 
76         public bool IsDel
77         {
78             get { return isDel; }
79             set { isDel = value; }
80         }
81     }
82 }
Dal层代码,含SqlHelper
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Data.SqlClient;
  6 using System.Collections;
  7 using System.Data;
  8 
  9 namespace Dal
 10 {
 11     public partial class MedClientDal
 12     {
 13 
 14         #region 添加 public int AddNew(Model.MedClientModel model)
 15         public int AddNew(Model.MedClientModel model)
 16         {
 17             string sql = @"insert into MedClient values(@id,@clientcode,@clientname,
 18                             @sex,@birthdate,@chufang,@duma,@jingma,@isdel)";
 19             SqlParameter[] paras = new SqlParameter[] { 
 20                 new SqlParameter("@id",model.Id),
 21                 new SqlParameter("@clientcode",model.ClientCode),
 22                 new SqlParameter("@clientname",model.ClientName),
 23                 new SqlParameter("@sex",model.Sex),
 24                 new SqlParameter("@birthdate",model.BirthDate),
 25                 new SqlParameter("@chufang",model.ChuFangPermit==null?(object)DBNull.Value:model.ChuFangPermit),
 26                 new SqlParameter("@duma",model.DuMaPermit==null?(object)DBNull.Value:model.DuMaPermit),
 27                 new SqlParameter("@jingma",model.JingMaPermit==null?(object)DBNull.Value:model.JingMaPermit),
 28                 new SqlParameter("@isdel",model.IsDel)
 29             };
 30             return SqlHelper.ExecuteNonquery(sql, paras);
 31         }
 32         #endregion
 33 
 34         #region 删除 public int DeleteModel(Guid id)
 35         public int DeleteModel(Guid id)
 36         {
 37             string sql = "update MedClient set isdel=1 where id=@id";
 38             SqlParameter para = new SqlParameter("@id", id);
 39             return SqlHelper.ExecuteNonquery(sql, para);
 40         }
 41         #endregion
 42 
 43         #region 更新 public int UpdateModel(Model.MedClientModel model)
 44         public int UpdateModel(Model.MedClientModel model)
 45         {
 46             string sql = @"update MedClient set clientcode=@clientcode,clientname=@clientname,
 47                             sex=@sex,birthdate=@birthdate,chufangpermit=@chufang,dumapermit=@duma,
 48                             jingmapermit=@jingma,isdel=@isdel where id=@id";
 49             SqlParameter[] paras = new SqlParameter[] { 
 50                 new SqlParameter("@id",model.Id),
 51                 new SqlParameter("@clientcode",model.ClientCode),
 52                 new SqlParameter("@clientname",model.ClientName),
 53                 new SqlParameter("@sex",model.Sex==null?(object)DBNull.Value:model.Sex),
 54                 new SqlParameter("@birthdate",model.BirthDate),
 55                 new SqlParameter("@chufang",model.ChuFangPermit==null?(object)DBNull.Value:model.ChuFangPermit),
 56                 new SqlParameter("@duma",model.DuMaPermit==null?(object)DBNull.Value:model.DuMaPermit),
 57                 new SqlParameter("@jingma",model.JingMaPermit==null?(object)DBNull.Value:model.JingMaPermit),
 58                 new SqlParameter("@isdel",model.IsDel)
 59             };
 60             return SqlHelper.ExecuteNonquery(sql, paras);
 61         }
 62         #endregion
 63 
 64         #region 根据id获取对象实体 public Model.MedClientModel GetModel(Guid id)
 65         public Model.MedClientModel GetModel(Guid id)
 66         {
 67             string sql = "select * from MedClient where id=@id";
 68             SqlParameter para = new SqlParameter("@id", id);
 69             Model.MedClientModel model = null;
 70             using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, para))
 71             {
 72                 if (reader.HasRows)
 73                 {
 74                     model = new Model.MedClientModel();
 75                     reader.Read();
 76                     ReaderModel(reader, model);
 77                 }
 78             }
 79             return model;
 80         }
 81         #endregion
 82 
 83         #region 根据员工编号获取对象实体 public Model.MedClientModel GetModel(string clientCode)
 84         public Model.MedClientModel GetModel(string clientCode)
 85         {
 86             string sql = "select * from MedClient where clientcode=@clientcode";
 87             SqlParameter para = new SqlParameter("@clientcode", clientCode);
 88             Model.MedClientModel model = null;
 89             using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, para))
 90             {
 91                 if (reader.HasRows)
 92                 {
 93                     model = new Model.MedClientModel();
 94                     reader.Read();
 95                     ReaderModel(reader, model);
 96                 }
 97             }
 98             return model;
 99         }
100         #endregion
101 
102         #region 读取对象数据 public void ReaderModel(SqlDataReader reader, Model.MedClientModel model)
103         public void ReaderModel(SqlDataReader reader, Model.MedClientModel model)
104         {
105             if (!reader.IsDBNull(0))
106             {
107                 model.Id = reader.GetGuid(0);
108             }
109             if (!reader.IsDBNull(1))
110             {
111                 model.ClientCode = reader.GetString(1);
112             }
113             if (!reader.IsDBNull(2))
114             {
115                 model.ClientName = reader.GetString(2);
116             }
117             if (!reader.IsDBNull(3))
118             {
119                 model.Sex = reader.GetBoolean(3);
120             }
121             if (!reader.IsDBNull(4))
122             {
123                 model.BirthDate = reader.GetDateTime(4);
124             }
125             if (!reader.IsDBNull(5))
126             {
127                 model.ChuFangPermit = reader.GetString(5);
128             }
129             if (!reader.IsDBNull(6))
130             {
131                 model.DuMaPermit = reader.GetString(6);
132             }
133             if (!reader.IsDBNull(7))
134             {
135                 model.JingMaPermit = reader.GetString(7);
136             }
137             if (!reader.IsDBNull(8))
138             {
139                 model.IsDel = reader.GetBoolean(8);
140             }
141         }
142         #endregion
143 
144         #region 获取符合条件的数据条数 public int GetModelCountByWhere(string name, string code, bool? sex)
145         public int GetModelCountByWhere(string name, string code, bool? sex)
146         {
147             StringBuilder  sql = new StringBuilder("select count(id) from MedClient where isDel=0 ");
148             List<SqlParameter> list = new List<SqlParameter>();
149             if (!string.IsNullOrEmpty(name))
150             {
151                 sql.Append("and clientname=@name ");
152                 list.Add(new SqlParameter("@name",name));
153             }
154             if (!string.IsNullOrEmpty(code))
155             {
156                 sql.Append("and clientcode=@code ");
157                 list.Add(new SqlParameter("@code",code));
158             }
159             if (sex != null)
160             {
161                 sql.Append("and sex=@sex");
162                 list.Add(new SqlParameter("@sex",sex.Value));
163             }
164             return Convert.ToInt32(SqlHelper.ExecuteScalar(sql.ToString(),list.ToArray()));
165         }
166         #endregion
167 
168         #region 根据条件查询数据 public IEnumerable<Model.MedClientModel> GetModelListByWhere(int pageIndex, int pageSize, out int pageCount, out int sum,string name,bool? sex,string code)
169         public IEnumerable<Model.MedClientModel> GetModelListByWhere(int pageIndex, int pageSize, out int pageCount, out int sum,string name,bool? sex,string code)
170         {
171             List<Model.MedClientModel> list = new List<Model.MedClientModel>();
172             sum = GetModelCountByWhere(name, code, sex);
173             if (sum <= 0)
174             {
175                 pageCount = 0;
176                 return list;
177             }
178             pageCount = Convert.ToInt32(Math.Ceiling(sum*1.0/pageSize));
179             StringBuilder sql = new StringBuilder("select * from (select *,row_number()over(order by clientcode) as row from MedClient where isdel=0 ");
180             List<SqlParameter> paras = new List<SqlParameter>() { new SqlParameter("@pageIndex",pageIndex),
181                 new SqlParameter("@pageSize",pageSize), };
182             if (!string.IsNullOrEmpty(name))
183             {
184                 sql.Append("and clientname=@name ");
185                 paras.Add(new SqlParameter("@name", name));
186             }
187             if (!string.IsNullOrEmpty(code))
188             {
189                 sql.Append("and clientcode=@code ");
190                 paras.Add(new SqlParameter("@code", code));
191             }
192             if (sex != null)
193             {
194                 sql.Append("and sex=@sex");
195                 paras.Add(new SqlParameter("@sex", sex.Value));
196             }
197             sql.Append(") as c where c.row between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize");
198             using (SqlDataReader reader = SqlHelper.ExecuteReader(sql.ToString(), paras.ToArray()))
199             {
200                 
201                 if (reader.HasRows)
202                 {
203                     while (reader.Read())
204                     {
205                         Model.MedClientModel model = new Model.MedClientModel();
206                         ReaderModel(reader, model);
207                         list.Add(model);
208                     }
209                 }
210             }
211             return list;
212         }
213         #endregion
214 
215         #region 查询所有数据 public IEnumerable<Model.MedClientModel> GetModelList()
216         public IEnumerable<Model.MedClientModel> GetModelList()
217         {
218             string sql = "select * from MedClient where isdel=1";
219             List<Model.MedClientModel> list = new List<Model.MedClientModel>();
220             using (SqlDataReader reader = SqlHelper.ExecuteReader(sql))
221             {
222                 
223                 if (reader.HasRows)
224                 {
225                     while (reader.Read())
226                     {
227                         Model.MedClientModel model = new Model.MedClientModel();
228                         ReaderModel(reader,model);
229                         list.Add(model);
230                     }
231                 }
232             }
233             return list;
234         }
235         #endregion
236 
237            }
238 }
239 
240 
241 
242 using System;
243 using System.Collections.Generic;
244 using System.Linq;
245 using System.Text;
246 using System.Configuration;
247 using System.Data.SqlClient;
248 using System.Data;
249 
250 namespace Dal
251 {
252     public static class SqlHelper
253     {
254         // 连接字符串
255         static string connStr = ConfigurationManager.ConnectionStrings["SQL"].ConnectionString;
256         //执行增删改操作
257         public static int ExecuteNonquery(string sql, params SqlParameter[] paras)
258         {
259             using (SqlConnection conn = new SqlConnection(connStr))
260             {
261                 using (SqlCommand cmd = new SqlCommand(sql,conn))
262                 {
263                     cmd.Parameters.AddRange(paras);
264                     if (conn.State == ConnectionState.Closed)
265                     {
266                         conn.Open();
267                     }
268                     return cmd.ExecuteNonQuery();
269                 }
270 
271                 
272             }
273         }
274         //获取首行首列
275         public static object ExecuteScalar(string sql, params SqlParameter[] paras)
276         {
277             using (SqlConnection conn = new SqlConnection(connStr))
278             {
279                 using (SqlCommand cmd = new SqlCommand(sql, conn))
280                 {
281                     cmd.Parameters.AddRange(paras);
282                     if (conn.State == ConnectionState.Closed)
283                     {
284                         conn.Open();
285                     }
286                     return cmd.ExecuteScalar();
287                 }
288             }
289         }
290         //逐行读取数据
291         public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] paras)
292         {
293             SqlDataReader reader = null;
294             SqlConnection conn = new SqlConnection(connStr);
295             using (SqlCommand cmd = new SqlCommand(sql, conn))
296             {
297                 cmd.Parameters.AddRange(paras);
298                 if (conn.State == ConnectionState.Closed)
299                 {
300                     conn.Open();
301                 }
302                 reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);
303 
304             }
305             return reader;
306         }
307         //DataTable读取数据
308         public static DataTable ExecuteTable(string sql, params SqlParameter[] paras)
309         {
310             DataTable dt = new DataTable();
311             using (SqlDataAdapter adapter = new SqlDataAdapter(sql, connStr))
312             {
313                 adapter.SelectCommand.Parameters.AddRange(paras);
314                 adapter.Fill(dt);
315             }
316             return dt;
317         }
318     }
319 }
Bll层代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Bll
 7 {
 8     public partial class MedClientBll
 9     {
10         Dal.MedClientDal dal = new Dal.MedClientDal();
11         #region 新增 public bool AddNew(Model.MedClientModel model)
12         public bool AddNew(Model.MedClientModel model)
13         {
14             return dal.AddNew(model)>0;
15         }
16         #endregion
17 
18         #region 删除 public bool DeleteModel(Guid id)
19         public bool DeleteModel(Guid id)
20         {
21             return dal.DeleteModel(id)>0;
22         }
23         #endregion
24 
25         #region 修改 public bool UpdateModel(Model.MedClientModel model)
26         public bool UpdateModel(Model.MedClientModel model)
27         {
28             return dal.UpdateModel(model)>0;
29         }
30         #endregion
31 
32         #region 通过id获取对象 public Model.MedClientModel GetModel(Guid id)
33         public Model.MedClientModel GetModel(Guid id)
34         {
35             return dal.GetModel(id);
36         }
37         #endregion
38 
39         #region 通过员工编号获取对象 public Model.MedClientModel GetModel(string code)
40         public Model.MedClientModel GetModel(string code)
41         {
42             return dal.GetModel(code);
43         }
44         #endregion
45 
46       
47 
48         #region 获取查询数据 public IEnumerable<Model.MedClientModel> GetModelListByWhere(int pageIndex, int pageSize, out int pageCount, out int sum, string name, bool? sex, string code)
49         public IEnumerable<Model.MedClientModel> GetModelListByWhere(int pageIndex, int pageSize, out int pageCount, out int sum, string name, bool? sex, string code)
50         {
51             return dal.GetModelListByWhere(pageIndex, pageSize, out pageCount, out  sum,  name,  sex,code);
52         }
53         #endregion
54     }
55 }

    分页查询的功能本来是用存储过程来完成的,后来做了一些改动,把它和按条件查询由一个方法完成,变成了现在用StringBuilder拼接Sql语句的形式。懒得再改存储过程了。

  3、UI层

    习惯性的新建了一个Html页面,一个一般处理程序,引用JQuery和JQueryUI,以及Css文件

    

Html页面
  1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2 <html xmlns="http://www.w3.org/1999/xhtml">
  3 <head>
  4     <title>医院职工信息</title>
  5   
  6 </head>
  7 <body>
  8 
  9     <a href="javascript:showDialog('新增','add','0')">新增</a>&nbsp;&nbsp;
 10     <a href="javascript:search()">查询</a>&nbsp;&nbsp;
 11     <a href="javascript:searchAll()" id="allshow" style="display:none">全部</a>
 12     <div id="dvList">
 13         <table id="tbList" cellpadding="0" cellspacing="0">
 14             <tr>
 15                 <th>
 16                     员工编号
 17                 </th>
 18                 <th>
 19                     姓名
 20                 </th>
 21                 <th>
 22                     性别
 23                 </th>
 24                 <th>
 25                     出生日期
 26                 </th>
 27                 <th>
 28                     处方权限
 29                 </th>
 30                 <th>
 31                     毒麻权限
 32                 </th>
 33                 <th>
 34                     精麻权限
 35                 </th>
 36                 <th>
 37                     操作
 38                 </th>
 39             </tr>
 40         </table>
 41     </div>
 42     <div id="page" class="pager">
 43     </div>
 44     <div id="dialog-confirm" style="display: none">
 45         <table id="diaTable">
 46             <tr>
 47                 <td>
 48                     员工编号:
 49                 </td>
 50                 <td align="left">
 51                     <input type="text" id="txtCode" />
 52                     <span><img alt="员工编号可用" id="dui" src="/css/ui-lightness/images/dui.ico" width="15px" height="15px" style="display:none"/>
 53                     <img id="cuo" alt="员工编号不可用" src="/css/ui-lightness/images/cha.ico" width="15px" height="15px" style="display:none"/></span>
 54                 </td>
 55                 
 56             </tr>
 57             <tr>
 58                 <td align="right">
 59                     姓名:
 60                 </td>
 61                 <td align="left">
 62                     <input type="text" id="txtName" />
 63                 </td>
 64             </tr>
 65             <tr>
 66                 <td align="right">
 67                     性别:
 68                 </td>
 69                 <td align="left">
 70                     <input type="radio" name="sex" id="male" value="1" /> 71                     <input type="radio" name="sex" id="female" value="0" /> 72                 </td>
 73             </tr>
 74             <tr>
 75                 <td align="right">
 76                     出生日期:
 77                 </td>
 78                 <td align="left">
 79                     <input type="text" id="datepicker" />
 80                 </td>
 81             </tr>
 82             <tr>
 83                 <td colspan="2">
 84                     <fieldset>
 85                         <legend>权限</legend>
 86                         <input type="checkbox" id="chu" />处方权限
 87                         <input type="checkbox" id="du" />毒麻权限
 88                         <input type="checkbox" id="jing" />精麻权限
 89                     </fieldset>
 90                 </td>
 91             </tr>
 92         </table>
 93         <br />
 94         <span id="msg" class="spmsg"></span>
 95     </div>
 96     <div id="search" style="display: none">
 97     <table>
 98         <tr>
 99             <td>员工编号:</td>
100             <td><input id="searchCode" type="text"/></td>
101             </tr>
102             <tr>
103             <td>员工姓名:</td>
104             <td><input type="text" id="searchName"/></td></tr>
105             <tr>
106             <td>性别:</td>
107             <td><input type="radio" name="searchSex" id="searchMale" value="1" />108                     <input type="radio" name="searchSex" id="searchFemale" value="0" />109                     </td>
110                     </tr>
111         
112     </table>
113     </div>
114 </body>
115 <link href="css/ui-lightness/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css" />
116     <link href="css/page.css" rel="stylesheet" type="text/css" />
117     <script src="js/JScriptHelper.js" type="text/javascript"></script>
118     <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
119     <script src="js/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script>
120     <script src="js/JScriptMedClient.js" type="text/javascript"></script>
121 </html>
122   
一般处理程序
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Web.Script.Serialization;
  6 
  7 namespace MedClient.Handler
  8 {
  9     /// <summary>
 10     /// Modify 的摘要说明
 11     /// </summary>
 12     public class Modify : IHttpHandler
 13     {
 14         Bll.MedClientBll bll = new Bll.MedClientBll();
 15 
 16         public void ProcessRequest(HttpContext context)
 17         {
 18             context.Response.ContentType = "text/plain";
 19             string act=context.Request["act"];
 20             
 21             if (string.IsNullOrEmpty(act))
 22             {
 23                 return;
 24             }
 25             switch (act)
 26             { 
 27                 case "add":
 28                     AddNew(context);break;               
 29                     
 30                 case "check":
 31                     CheckClientCode(context);
 32                     break;
 33                 case "searchById":
 34                     SearchById(context);
 35                     break;
 36                 case "modify":
 37                     ChangeModel(context);break;
 38                 case "delete":
 39                     DeleteModel(context);
 40                     break;
 41                 case "all":
 42                
 43                     SearchByWhere(context);
 44                     break;
 45                 default: break;
 46             }
 47             
 48               
 49             
 50             
 51         }
 52 
 53         #region 判断传递的参数 private void Judge(HttpContext context, Model.MedClientModel model)
 54         private void Judge(HttpContext context, Model.MedClientModel model)
 55         {
 56             string code = context.Request["code"];
 57             string name = context.Request["name"];
 58             string birth = context.Request["birthdate"];
 59             string male = context.Request["male"];
 60             string female = context.Request["female"];
 61             string chu = context.Request["chu"];
 62             string du = context.Request["du"];
 63             string jing = context.Request["jing"];
 64             DateTime birthdate;
 65             if (string.IsNullOrEmpty(code))
 66             {
 67                 context.Response.Write("no|员工编号不能为空");
 68             }
 69             else if (string.IsNullOrEmpty(name))
 70             {
 71                 context.Response.Write("no|员工姓名不能为空");
 72             }
 73             else if (!DateTime.TryParse(birth, out birthdate))
 74             {
 75                 context.Response.Write("no|员工出生日期不能为空");
 76             }
 77             else
 78             {
 79                 model.ClientCode = code;
 80                 model.ClientName = name;
 81                 model.BirthDate = birthdate;
 82                 if (male == "true")
 83                 {
 84                     model.Sex = true;
 85                 }
 86                 else if (female == "true")
 87                 {
 88                     model.Sex = false;
 89                 }
 90                 else
 91                 {
 92                     model.Sex = null;
 93                 }
 94                 if (chu == "true")
 95                 {
 96                     model.ChuFangPermit = "Y";
 97                 }
 98                 if (du == "true")
 99                 {
100                     model.DuMaPermit = "Y";
101                 }
102                 if (jing == "true")
103                 {
104                     model.JingMaPermit = "Y";
105                 }
106                 model.IsDel = false;
107             }
108 
109         }
110         #endregion
111 
112         #region 新增 private void AddNew(HttpContext context)
113         private void AddNew(HttpContext context)
114         {
115             Model.MedClientModel model = new Model.MedClientModel();
116             model.Id = Guid.NewGuid();
117             Judge(context, model);
118             if (bll.GetModel(model.ClientCode) != null)
119             {
120                 context.Response.Write("no|员工编号不可重复");
121                 return;
122             }
123             if (bll.AddNew(model))
124             {
125                 context.Response.Write("yes|" + model.Id);
126             }
127             else
128             {
129                 context.Response.Write("no|新增失败");
130             }
131         }
132         #endregion
133 
134         #region 获取分页数据 public void GetCurrentPage(HttpContext context)
135         //public void GetCurrentPage(HttpContext context)
136         //{
137         //    int pageIndex;
138         //    int pageCount;
139         //    int sum;
140         //    string index=context.Request["pageIndex"];
141         //    if (!int.TryParse(index, out pageIndex))
142         //    {
143         //        pageIndex = 1;
144         //    }
145         //    List<Model.MedClientModel> pageList = (List<Model.MedClientModel>)bll.GetCurrentPage(pageIndex, 5, out pageCount, out sum);
146         //    if (pageList.Count > 0)
147         //    {
148         //        JavaScriptSerializer js = new JavaScriptSerializer();
149         //        string str = js.Serialize(pageList);
150         //        str = "{\"pageCount\":" + pageCount + ",\"pagelist\":" + str + "}";
151         //        context.Response.Write(str);
152         //    }
153         //    else
154         //    {
155         //        context.Response.Write("no|当前没有数据");
156         //    }
157 
158         //}
159         #endregion
160 
161         #region 检测员工编号是否唯一 public void CheckClientCode(HttpContext context)
162         public void CheckClientCode(HttpContext context)
163         { 
164             string clientCode=context.Request["code"];
165             if (string.IsNullOrWhiteSpace(clientCode)||clientCode==string.Empty) {
166                 context.Response.Write("no|员工编号不能为空");
167                 return;
168             }
169             Model.MedClientModel model = bll.GetModel(clientCode);
170             if (model == null)
171             {
172                 context.Response.Write("yes");
173                 return;
174             }
175             else
176             {
177                 context.Response.Write("no");
178                 return;
179             }
180         }
181         #endregion
182 
183         #region 查询单个实体  public void SearchById(HttpContext context)
184         public void SearchById(HttpContext context)
185         {
186             Guid id;
187             string strId=context.Request["id"];
188             if (!Guid.TryParse(strId, out id))
189             {
190                 context.Response.Write("no");
191                 return;
192             }
193             Model.MedClientModel model = bll.GetModel(id);
194             if (model == null) 
195             {
196                 context.Response.Write("no");
197                 return;
198             }
199             JavaScriptSerializer js = new JavaScriptSerializer();
200             string str = js.Serialize(model);
201             context.Response.Write(str);
202         }
203         #endregion
204 
205         #region 修改 public void ChangeModel(HttpContext context)
206         public void ChangeModel(HttpContext context)
207         {
208             Model.MedClientModel model = new Model.MedClientModel();
209             Guid id;
210             string strId = context.Request["id"];
211             if (!Guid.TryParse(strId, out id))
212             {
213                 context.Response.Write("no");
214                 return;
215             }
216             model.Id = id;
217             Judge(context, model);
218            
219             if (bll.UpdateModel(model))
220             {
221                 context.Response.Write("yes");
222             }
223             else
224             {
225                 context.Response.Write("no");
226             }
227         }
228         #endregion
229 
230         #region 删除 public void DeleteModel(HttpContext context)
231         public void DeleteModel(HttpContext context)
232         {
233             Guid id;
234             string strId = context.Request["id"];
235             if (!Guid.TryParse(strId, out id))
236             {
237                 context.Response.Write("no");
238                 return;
239             }
240             if (bll.DeleteModel(id))
241             {
242                 context.Response.Write("yes");
243 
244             }
245             else
246             {
247                 context.Response.Write("no");
248             }
249         }
250         #endregion
251 
252         #region 按条件查询
253         public void SearchByWhere(HttpContext context)
254         {
255             string code = context.Request["code"];
256             string name = context.Request["name"];
257             bool? sex=null;
258             string strSex=context.Request["sex"];
259             if (strSex == "true")
260             {
261                 sex = true;
262             }
263             else if (strSex == "false")
264             {
265                 sex = false;
266             }
267             
268 
269            
270             int pageIndex;
271             int pageCount;
272             int sum;
273             string index = context.Request["pageIndex"];
274             if (!int.TryParse(index, out pageIndex))
275             {
276                 pageIndex = 1;
277             }
278             List<Model.MedClientModel> list = (List<Model.MedClientModel>)bll.GetModelListByWhere(pageIndex, 5, out pageCount, out sum, name, sex, code);
279             if (list.Count <= 0)
280             {
281                 context.Response.Write("{\"sum\":0}");
282             }
283             else
284             {
285                 JavaScriptSerializer js = new JavaScriptSerializer();
286                 string str = js.Serialize(list);
287                 str = "{\"sum\":"+sum+",\"pageCount\":" + pageCount + ",\"pagelist\":" + str + "}";
288                 context.Response.Write(str);
289             }
290         }
291         #endregion
292         public bool IsReusable
293         {
294             get
295             {
296                 return false;
297             }
298         }
299     }
300 }

    既然已经引用的JQuery,别用JS手写Ajax了。但是,本人某次调用JQuery提供的Ajax莫名其妙的报错,最后还是手写Ajax才解决的问题。这个代码还是保存一下吧。

JS版Ajax
 1 function createXMLHttpRequest() {
 2     var xhr = false;
 3     try {
 4         xhr = new ActiveXObject("Msxml2.XMLHTTP");
 5     } catch (e) {
 6         try {xhr = new ActiveXObject("Microsoft.XMLHTTP");
 7             
 8         } catch (e2) {
 9         xhr = false;
10         }
11 }
12 if (!xhr && typeof XMLHttpRequest != 'undefined') {
13     xhr = new XMLHttpRequest();
14 }
15 return xhr;
16 }
//检查用户输入
function checkInput(code, name, birthdate) {
    var sp = gel('msg');
    var result = false;
    if (code == '') {
        sp.innerHTML = '员工编号不能为空';
    } else if (name== '') {
        sp.innerHTML = '员工姓名不能为空';
    } else if (birthdate == '') {
        sp.innerHTML = '员工出生日期不能为空';
    } else {
        result = true;
    }
    return result;
}
//根据id获取对象
function gel(id) {
    return document.getElementById(id);
}
//生成页码条
function pageBar(pageIndex,pageBarSize,pageCount,sum,pageDiv,act) {
    this.pageIndex = pageIndex;
    this.pageBarSize = pageBarSize;
    this.pageCount = pageCount;
    this.pageDiv = pageDiv;
    this.sum = sum;
    this.createPageBar = function () {
        this.pageDiv.innerHTML = '';
        var pageStart = this.pageIndex - Math.ceil(this.pageBarSize / 2);
        if (pageStart <= 1) {
            pageStart = 1;
        }
        var pageEnd = pageStart + this.pageBarSize;
        if (pageEnd > pageCount) {
            pageEnd = pageCount;
        }
        if (this.pageIndex == 1) {
            var spFirst = document.createElement('span');
            spFirst.innerHTML = '首页';
            var spLast = document.createElement('span');
            spLast.innerHTML = '上一页';
            this.pageDiv.appendChild(spFirst)
            this.pageDiv.appendChild(spLast);

        } else {
            var aFirst = document.createElement('a');
            aFirst.innerHTML = '首页';
            aFirst.href = 'javascript:createPage(1)';
            var aLast = document.createElement('a');
            aLast.innerHTML = '上一页';
            aLast.href = 'javascript:createPage(' + (parseInt(this.pageIndex) - 1) + ')';
            this.pageDiv.appendChild(aFirst);
            this.pageDiv.appendChild(aLast);
        }
        for (var i = pageStart; i <= pageEnd; i++) {
            var bar = 0;
            if (i == this.pageIndex) {
                bar = document.createElement('span');
                bar.innerHTML = i;
            } else {
                bar = document.createElement('a');
                bar.innerHTML = i;
                bar.href = 'javascript:createPage(' + i + ')';
            }
            this.pageDiv.appendChild(bar);
        }
        if (this.pageIndex >= pageCount) {
            var spNext = document.createElement('span');
            spNext.innerHTML = '下一页';
            var spEnd = document.createElement('span');
            spEnd.innerHTML = '末页';
            this.pageDiv.appendChild(spNext);
            this.pageDiv.appendChild(spEnd);
        } else {
            var aNext = document.createElement('a');
            aNext.innerHTML = '下一页';
            aNext.href = 'javascript:createPage(' + (parseInt(this.pageIndex) + 1) + ')';
            var aEnd = document.createElement('a');
            aEnd.innerHTML = '末页';
            aEnd.href = 'javascript:createPage(' + this.pageCount + ')';

            this.pageDiv.appendChild(aNext)
            this.pageDiv.appendChild(aEnd);
        }
        var labelFirst = document.createElement('label');
        labelFirst.innerHTML = this.pageIndex + '/' + this.pageCount;
        this.pageDiv.appendChild(labelFirst);
        var labelSecond = document.createElement('label');
        labelSecond.innerHTML = '共' + sum + '条';
        this.pageDiv.appendChild(labelSecond);
    }
}
//转成日期
function changeDateFormat(cellval) {
    var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
    var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
    var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
    return date.getFullYear() + "-" + month + "-" + currentDate;
}
JScriptHelper.js
 1 function createXMLHttpRequest() {
 2     var xhr = false;
 3     try {
 4         xhr = new ActiveXObject("Msxml2.XMLHTTP");
 5     } catch (e) {
 6         try {xhr = new ActiveXObject("Microsoft.XMLHTTP");
 7             
 8         } catch (e2) {
 9         xhr = false;
10         }
11 }
12 if (!xhr && typeof XMLHttpRequest != 'undefined') {
13     xhr = new XMLHttpRequest();
14 }
15 return xhr;
16 }
JScriptMedClient代码
  1 var tbList = false;
  2 var pageIndex = false;
  3 var pageCount = false;
  4 var sum = false;
  5 var res = false;
  6 var condition = new Array();
  7 $(function () {
  8     $('#datepicker').datepicker();
  9     $('#txtCode').blur(checkClientCode);
 10     
 11     tbList = $('#tbList');
 12     pageIndex = 1;
 13     createPage(pageIndex);
 14 });
 15 //查出所有数据
 16 var searchAll = function () {
 17     $('#allshow').css('display', 'none');
 18     condition = ['', '', ''];
 19     createPage(1);
 20 }
 21 //添加和修改
 22 var showDialog = function (biaoti, act, id) {
 23     if (act == "modify") {
 24         fuzhi(id);
 25     }
 26     $("#dialog-confirm").dialog({
 27         resizable: false,
 28         title: biaoti,
 29          400,
 30         height: 380,
 31         modal: true,
 32         close: function () {
 33             clearData();
 34         },
 35         buttons: {
 36             '取消': function () {
 37                 $(this).dialog('close');
 38                 clearData();
 39             },
 40             '确定': function () {
 41 
 42                 modify(act, id);
 43 
 44 
 45             }
 46 
 47         }
 48     });
 49 }
 50 //清空弹出窗口的内容
 51 var clearData = function () {
 52     $('#txtCode').val('');
 53     $('#txtName').val('');
 54     $('#dui').css('display', 'none');
 55     $('#cuo').css('display', 'none');
 56     $('#datepicker').val('');
 57     $('#female').attr('checked', false);
 58     $('#male').attr('checked', false);
 59     $('#chu').attr('checked', false);
 60     $('#du').attr('checked', false);
 61     $('#jing').attr('checked', false);
 62 }
 63 
 64 //操作
 65 var modify = function (act, id) {
 66     var code = $('#txtCode');
 67     var name = $('#txtName');
 68     var birthdate = $('#datepicker');
 69     var chu = $('#chu');
 70     var du = $('#du');
 71     var jing = $('#jing');
 72     var male = $('#male');
 73     var female = $('#female');
 74     if (!checkInput(code.val(), name.val(), birthdate.val())) {
 75         return;
 76     }
 77     var send = false;
 78     if (id == '0') {
 79         send = { "act": act, "code": code.val(), "name": name.val(), "birthdate": birthdate.val(), "male": male.attr("checked"), "female": female.attr("checked"), "chu": chu.attr("checked"), "du": du.attr("checked"), "jing": jing.attr("checked") };
 80     } else {
 81         send = { "act": act, "id": id, "code": code.val(), "name": name.val(), "birthdate": birthdate.val(), "male": male.attr("checked"), "female": female.attr("checked"), "chu": chu.attr("checked"), "du": du.attr("checked"), "jing": jing.attr("checked") };
 82     }
 83 
 84     $.post('/Handler/Modify.ashx', send,
 85             function (data) {
 86                 var temp = data.split('|');
 87                 if (temp[0] == 'yes') {
 88 
 89                     $('#dialog-confirm').dialog('close');
 90                     clearData();
 91                     if (act == 'add') {
 92                         condition = ['', '', ''];
 93                         if (sum % 5 != 0) {
 94                             createPage(pageCount, 'all');
 95                         } else {
 96                             createPage(pageCount+1, 'all');
 97                         }
 98                     } else {
 99                         createPage(pageIndex, 'all')
100                     }
101 
102                 }
103 
104             }
105             );
106 }
107 
108 //展示数据
109 var createPage = function (index) {
110     pageIndex = index;
111     $('#tbList tr:gt(0)').remove();
112 
113     $.post('/Handler/Modify.ashx', { "pageIndex": index, "act": 'all', "code": condition[0], "name": condition[1], "sex": condition[2] }, function (data) {
114         var json = eval('(' + data + ')');
115 
116         sum = json.sum;
117         if (sum > 0) {
118             createTable(json);
119             $('#tbList').css('display', 'block');
120             showPageBar(pageIndex, pageCount, sum);
121         }
122 
123         else {
124             showPageBar(1, 1, sum);
125 
126             $('#tbList').css('display', 'none');
127             window.setTimeout(' alert("对不起,没有您需要的数据!");', 100);
128 
129         }
130     });
131 }
132 //创建表格
133 var createTable = function (json) {
134     pageCount = json.pageCount;
135     var dataReturn = json.pagelist;
136     for (var i = 0; i < dataReturn.length; i++) {
137         var tr = gel('tbList').insertRow(-1);
138         tr.setAttribute("id", dataReturn[i].Id);
139         var td1 = tr.insertCell(-1);
140         td1.innerHTML = dataReturn[i].ClientCode;
141         var td2 = tr.insertCell(-1);
142         td2.innerHTML = dataReturn[i].ClientName;
143         var sex = '男';
144         if (dataReturn[i].Sex == false) {
145             sex = '女';
146         } else if (dataReturn[i].Sex == null) {
147             sex = '未知';
148         }
149         var td3 = tr.insertCell(-1);
150         td3.innerHTML = sex;
151         var td4 = tr.insertCell(-1);
152         td4.innerHTML = changeDateFormat(dataReturn[i].BirthDate);
153         var td5 = tr.insertCell(-1);
154         var chufang = dataReturn[i].ChuFangPermit == 'Y' ? '有' : '无';
155         td5.innerHTML = chufang;
156         var td6 = tr.insertCell(-1);
157         var duma = dataReturn[i].DuMaPermit == 'Y' ? '有' : '无';
158         td6.innerHTML = duma;
159         var td7 = tr.insertCell(-1);
160         var jingma = dataReturn[i].JingMaPermit == 'Y' ? '有' : '无';
161         td7.innerHTML = jingma;
162         var td8 = tr.insertCell(-1);
163         var title = '修改';
164         var act = 'modify';
165         td8.innerHTML = '<a href="javascript:showDialog(\'' + title + '\',\'' + act + '\'' + ',\'' + dataReturn[i].Id + '\')" >修改</a>|' + '<a href="javascript:deleteModel(\'' + dataReturn[i].Id + '\')">删除</a>';
166 
167     }
168 
169 }
170 //创建页码条
171 var showPageBar = function (pageIndex, pageCount,sum) {
172     var page = new pageBar(pageIndex, 5, pageCount,sum, gel('page'));
173     page.createPageBar();
174 }
175 //检测员工编号
176 var checkClientCode = function () {
177 
178     var code = $('#txtCode');
179     if (code.val() != '') {
180         $.post('/Handler/Modify.ashx', { "code": code.val(), "act": 'check' }, function (data) {
181             if (data == 'yes') {
182                 $('#dui').css('display', 'inline');
183                 $('#cuo').css('display', 'none');
184                 res = true;
185             } else if (data == 'no') {
186                 $('#dui').css('display', 'none');
187                 $('#cuo').css('display', 'inline');
188             } else {
189                 var temp = data.split('|');
190                 alert(temp[1]);
191             }
192 
193         });
194     }
195 
196 }
197 //赋值
198 function fuzhi(id) {
199     $.post('/Handler/Modify.ashx', { "id": id, "act": 'searchById' }, function (data) {
200         if (data == 'no') {
201             alert('数据错误');
202         } else {
203             var temp = $.parseJSON(data);
204             $('#txtCode').val(temp.ClientCode);
205             $('#txtName').val(temp.ClientName);
206             $('#datepicker').val(changeDateFormat(temp.BirthDate));
207             if (temp.Sex == false) {
208                 $('#female').attr('checked', true);
209             } else if (temp.Sex == true) {
210                 $('#male').attr('checked', true);
211             }
212             temp.ChuFangPermit == 'Y' ? $('#chu').attr('checked', true) : $('#chu').attr('checked', false);
213             temp.DuMaPermit == 'Y' ? $('#du').attr('checked', true) : $('#du').attr('checked', false);
214             temp.JingMaPermit == 'Y' ? $('#jing').attr('checked', true) : $('#jing').attr('checked', false);
215 
216         }
217     });
218 }
219 //删除
220 var deleteModel = function (id) {
221     if (confirm('确定删除吗?')) {
222         $.post('/Handler/Modify.ashx', { "id": id, "act": 'delete' }, function (data) {
223             if (data == 'yes') {
224                 createPage(pageIndex);
225             } else {
226                 alert('删除失败');
227             }
228         });
229     }
230 }
231 //查询对话框
232 var search = function () {
233     $("#search").dialog({
234         resizable: false,
235         title: '查询',
236          400,
237         height: 280,
238         modal: true,
239         close: function () {
240             clearCondition();
241         },
242         buttons: {
243             '取消': function () {
244                 $(this).dialog('close');
245                 clearCondition();
246             },
247             '确定': function () {
248 
249                 searchByWhere();
250                 clearCondition();
251 
252 
253             }
254 
255         }
256     });
257 }
258 //清空查询条件
259 var clearCondition = function () {
260     $('#searchCode').val('');
261     $('#searchName').val('');
262     $('#searchMale').attr('checked', false);
263     $('#searchFemale').attr('checked',false);
264 }
265 //查询
266 var searchByWhere = function () {
267     $('#allshow').css('display','inline');
268     var searchIndex = 1;
269     var code = $('#searchCode').val();
270     var name = $('#searchName').val();
271     var sex = 0;
272     if ($('#searchMale').attr('checked') == true) {
273         sex = true;
274     } else if ($('#searchFemale').attr('checked') == true) {
275         sex = false;
276     }
277     else if (code == '' && name == '') {
278         alert('请输入查询条件');
279         return;
280     }
281 
282     condition = [code, name, sex];
283     createPage(searchIndex);
284     $('#search').dialog('close');
285 
286 }

  本人作为一只小菜鸟,也只有这点水平,如果这篇随笔有幸被其他人看到,还望批评指正。 

原文地址:https://www.cnblogs.com/wcfl/p/2826327.html