曾经很多次的拿增删改查功能来学习编程,从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中建立三层,手头没有代码生成器,只好手敲。

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 }

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 }

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文件

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> 10 <a href="javascript:search()">查询</a> 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才解决的问题。这个代码还是保存一下吧。

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; }
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 }

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 }
本人作为一只小菜鸟,也只有这点水平,如果这篇随笔有幸被其他人看到,还望批评指正。