首页 > 代码库 > 一套手写ajax加一般处理程序的增删查改

一套手写ajax加一般处理程序的增删查改

倾述下感受:8天16次驳回。这个惨不忍睹。

好了不说了,说多了都是泪。

直接上代码 :

这个里面的字段我是用动软生成的,感觉自己手写哪些字段太浪费时间了,说多了都是泪

ajax.model层的代码:

技术分享
using System;namespace Ajax.Model{    /// <summary>    /// SM_Class:实体类(属性说明自动提取数据库字段的描述信息)    /// </summary>    [Serializable]    public partial class SM_Class    {        public SM_Class()        {}        #region Model        private int _sm_id;        private string _sm_name;        private string _sm_grade;        private string _sm_class;        private string _sm_gender;        private int? _sm_age;        private DateTime _sm_outtime;        private bool _sm_istf;        /// <summary>        ///         /// </summary>        public int SM_id        {            set{ _sm_id=value;}            get{return _sm_id;}        }        /// <summary>        ///         /// </summary>        public string SM_name        {            set{ _sm_name=value;}            get{return _sm_name;}        }        /// <summary>        ///         /// </summary>        public string SM_Grade        {            set{ _sm_grade=value;}            get{return _sm_grade;}        }        /// <summary>        ///         /// </summary>        public string SM_Classes        {            set{ _sm_class=value;}            get{return _sm_class;}        }        /// <summary>        ///         /// </summary>        public string SM_Gender        {            set{ _sm_gender=value;}            get{return _sm_gender;}        }        /// <summary>        ///         /// </summary>        public int? SM_Age        {            set{ _sm_age=value;}            get{return _sm_age;}        }        /// <summary>        ///         /// </summary>        public DateTime SM_OutTime        {            set{ _sm_outtime=value;}            get{return _sm_outtime;}        }        /// <summary>        ///         /// </summary>        public bool SM_Istf        {            set{ _sm_istf=value;}            get{return _sm_istf;}        }        #endregion Model    }}
View Code

ajax.dal层代码:

第一个先上数据库连接帮助类:

技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Ajax.DAL{    //需要系统配置;系统设定;系统设置;查看系统配置程序集    using System.Configuration;    using System.Data.SqlClient;    using System.Data;   public class HelperSQL    {        //在ui的配置文件中配置AppSettings       public static string str = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];       private static SqlConnection connection;       public static SqlConnection Connection {           get {               //判断是否有这个连接没有               if (connection == null) {                   //创建连接                   connection = new SqlConnection(str);                   //打开连接                   connection.Open();               }                   //判断连接是否是关闭的               else if(connection.State==System.Data.ConnectionState.Closed){                   //打开连接                   connection.Open();               }                   //判断连接是否中断               else if (connection.State == System.Data.ConnectionState.Broken) {                   //先关闭连接                   connection.Close();                   //打开连接                   connection.Open();               }               //返回连接               return connection;           }       }       public static int ExecuteCommand(string strsql)       {           //传入数据库命令和连接           SqlCommand sqlcmd = new SqlCommand(strsql, Connection);           //执行语句返回受影响的行数           int result = sqlcmd.ExecuteNonQuery();           return result;       }       public static int ExecuteCommand(string strName, params SqlParameter[] values)       {           //传入数据库命令和连接           SqlCommand sqlcmd = new SqlCommand(strName, Connection);           //增加参数           sqlcmd.Parameters.AddRange(values);           return sqlcmd.ExecuteNonQuery();       }       public static DataSet GetDataSet(string strName)       {           //创建一个内存缓存           DataSet ds = new DataSet();           //传入命令和连接           SqlCommand sqlcmd = new SqlCommand(strName, Connection);           //创建一个桥接器           SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd);           //写入内存           sqlda.Fill(ds);           //返回           return ds;       }       public static DataSet GetDataSet(string strName, params SqlParameter[] values)       {           //创建一个内存缓存           DataSet ds = new DataSet();           //传入命令和连接           SqlCommand sqlcmd = new SqlCommand(strName, Connection);           //增加参数           sqlcmd.Parameters.AddRange(values);           //打开桥连接           SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd);           //写入到内存           sqlda.Fill(ds);           //返回           return ds;       }       public static DataSet StoredProcedure(string strName, params IDataParameter[] parmenters)       {           using (SqlConnection connection = new SqlConnection(str))           {               //创建一个内存缓存               DataSet ds = new DataSet();               //创建一个桥连接               SqlDataAdapter sqlda = new SqlDataAdapter();               //告诉桥连接这个是存储过程               sqlda.SelectCommand = StoredProcedureCommand(connection, strName, parmenters);               //写入内存               sqlda.Fill(ds);              //返回               return ds;           }       }       private static SqlCommand StoredProcedureCommand(SqlConnection sqlcc, string strName, IDataParameter[] parmenters) {           //传入存储过程名称和连接数据库命令           SqlCommand sqlcmd = new SqlCommand(strName, sqlcc);           //告诉数据库这个是存储过程           sqlcmd.CommandType = CommandType.StoredProcedure;           foreach (var item in parmenters)           {               if (item !=null)               {                   //判断的参数是输入输出或者参数是输入并且参数不能为空                   if ((item.Direction==ParameterDirection.InputOutput||                                         item.Direction==ParameterDirection.Input  )&&                                         (item.Value==null))                   {                       //该类区分空值(空对象)和未初始化值                       item.Value =http://www.mamicode.com/ DBNull.Value;                   }                   //加入这个参数                   sqlcmd.Parameters.Add(item);               }                 }           //返回连接和命令           return sqlcmd;       }   }}
View Code

ajax.dal 实现的增删查改

技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Ajax.DAL{    using Ajax.Model;    using System.Data;    using System.Data.SqlClient;  public   class AjaxSM_Class    {      /// <summary>      /// 新增      /// </summary>      /// <param name="model"></param>      /// <returns></returns>      public int Add(SM_Class model) {          StringBuilder strSql = new StringBuilder();          strSql.Append("insert into SM_Class(");          strSql.Append("SM_name,SM_Grade,SM_Class,SM_Gender,SM_Age,SM_OutTime,SM_Istf)");          strSql.Append(" values (");          strSql.Append("@SM_name,@SM_Grade,@SM_Class,@SM_Gender,@SM_Age,@SM_OutTime,@SM_Istf)");          strSql.Append(";select @@IDENTITY");          SqlParameter[] parameters = {                    new SqlParameter("@SM_name", SqlDbType.VarChar,20),                    new SqlParameter("@SM_Grade", SqlDbType.VarChar,20),                    new SqlParameter("@SM_Class", SqlDbType.VarChar,20),                    new SqlParameter("@SM_Gender", SqlDbType.VarChar,4),                    new SqlParameter("@SM_Age", SqlDbType.Int,4),                    new SqlParameter("@SM_OutTime", SqlDbType.DateTime),                    new SqlParameter("@SM_Istf", SqlDbType.Bit,1)};          parameters[0].Value =http://www.mamicode.com/ model.SM_name;          parameters[1].Value =http://www.mamicode.com/ model.SM_Grade;          parameters[2].Value =http://www.mamicode.com/ model.SM_Classes;          parameters[3].Value =http://www.mamicode.com/ model.SM_Gender;          parameters[4].Value =http://www.mamicode.com/ model.SM_Age;          parameters[5].Value =http://www.mamicode.com/ model.SM_OutTime;          parameters[6].Value =http://www.mamicode.com/ model.SM_Istf;          object obj = HelperSQL.ExecuteCommand(strSql.ToString(), parameters);          if (obj == null)          {              return 0;          }          else          {              return Convert.ToInt32(obj);          }            }      /// <summary>      /// 删除      /// </summary>      /// <param name="SM_id"></param>      /// <returns></returns>      public int Delete(int SM_id)      {          StringBuilder strSql = new StringBuilder();          strSql.Append("UPDATE SM_Class SET SM_Istf=0  ");          strSql.Append("  WHERE SM_id=@SM_id");          SqlParameter[] parameters = {                    new SqlParameter("@SM_id", SqlDbType.Int,4)            };          parameters[0].Value =http://www.mamicode.com/ SM_id;          int rows = HelperSQL.ExecuteCommand(strSql.ToString(), parameters);          return rows;      }      /// <summary>      /// 获得所有数据      /// </summary>      /// <param name="strWhere"></param>      /// <returns></returns>      public List<SM_Class> GetList()      {          StringBuilder strSql = new StringBuilder();          List<SM_Class> list = new List<SM_Class>();          strSql.Append("select SM_id,SM_name,SM_Grade,SM_Class,SM_Gender,SM_Age,SM_OutTime,SM_Istf ");          strSql.Append(" FROM SM_Class ");         //获取dataset从表中读取          DataSet ds= HelperSQL.GetDataSet(strSql.ToString());          DataTable dt = ds.Tables[0];          foreach (DataRow item in dt.Rows)          {                //得到一个sm_class 类              SM_Class smc = DataModel(item);              //加入到list集合中              list.Add(smc);          }          return list;      }      /// <summary>      /// 更具id找一条数据      /// </summary>      /// <param name="SM_id"></param>      /// <returns></returns>      public List<SM_Class> GetList( int  SM_id) {          StringBuilder strSql = new StringBuilder();          List<SM_Class> list = new List<SM_Class>();          strSql.Append("select  top 1 SM_id,SM_name,SM_Grade,SM_Class,SM_Gender,SM_Age,SM_OutTime,SM_Istf from SM_Class ");          strSql.Append("  where SM_id=@SM_id");          SqlParameter[] parameters = {                    new SqlParameter("@SM_id", SqlDbType.Int,4)            };          parameters[0].Value =http://www.mamicode.com/ SM_id;          DataSet ds = HelperSQL.GetDataSet(strSql.ToString(),parameters);          DataTable dt = ds.Tables[0];          foreach (DataRow item in dt.Rows)          {              //得到一个sm_class 类              SM_Class smc = DataModel(item);              //加入到list集合中              list.Add(smc);          }          return list;      }      /// <summary>      /// 得到一个实体      /// </summary>      /// <param name="row"></param>      /// <returns></returns>      private SM_Class DataModel(DataRow row) {          SM_Class model = new SM_Class();          if (row != null)          {              if (row["SM_id"] != null && row["SM_id"].ToString() != "")              {                  model.SM_id = int.Parse(row["SM_id"].ToString());              }              if (row["SM_name"] != null)              {                  model.SM_name = row["SM_name"].ToString();              }              if (row["SM_Grade"] != null)              {                  model.SM_Grade = row["SM_Grade"].ToString();              }              if (row["SM_Class"] != null)              {                  model.SM_Classes = row["SM_Class"].ToString();              }              if (row["SM_Gender"] != null)              {                  model.SM_Gender = row["SM_Gender"].ToString();              }              if (row["SM_Age"] != null && row["SM_Age"].ToString() != "")              {                  model.SM_Age = int.Parse(row["SM_Age"].ToString());              }              if (row["SM_OutTime"] != null && row["SM_OutTime"].ToString() != "")              {                  model.SM_OutTime = DateTime.Parse(row["SM_OutTime"].ToString());              }              if (row["SM_Istf"] != null && row["SM_Istf"].ToString() != "")              {                  if ((row["SM_Istf"].ToString() == "1") || (row["SM_Istf"].ToString().ToLower() == "true"))                  {                      model.SM_Istf = true;                  }                  else                  {                      model.SM_Istf = false;                  }              }          }          return model;      }      /// <summary>      /// 更新操作      /// </summary>      /// <param name="model"></param>      /// <returns></returns>      public int Update(SM_Class model) {          StringBuilder strSql = new StringBuilder();          strSql.Append("update SM_Class set ");          strSql.Append("SM_name=@SM_name,");          strSql.Append("SM_Grade=@SM_Grade,");          strSql.Append("SM_Class=@SM_Class,");          strSql.Append("SM_Gender=@SM_Gender,");          strSql.Append("SM_Age=@SM_Age,");          strSql.Append("SM_OutTime=@SM_OutTime,");          strSql.Append("SM_Istf=@SM_Istf");          strSql.Append(" where SM_id=@SM_id");          SqlParameter[] parameters = {                    new SqlParameter("@SM_name", SqlDbType.VarChar,20),                    new SqlParameter("@SM_Grade", SqlDbType.VarChar,20),                    new SqlParameter("@SM_Class", SqlDbType.VarChar,20),                    new SqlParameter("@SM_Gender", SqlDbType.VarChar,4),                    new SqlParameter("@SM_Age", SqlDbType.Int,4),                    new SqlParameter("@SM_OutTime", SqlDbType.DateTime),                    new SqlParameter("@SM_Istf", SqlDbType.Bit,1),                    new SqlParameter("@SM_id", SqlDbType.Int,4)};          parameters[0].Value =http://www.mamicode.com/ model.SM_name;          parameters[1].Value =http://www.mamicode.com/ model.SM_Grade;          parameters[2].Value =http://www.mamicode.com/ model.SM_Classes;          parameters[3].Value =http://www.mamicode.com/ model.SM_Gender;          parameters[4].Value =http://www.mamicode.com/ model.SM_Age;          parameters[5].Value =http://www.mamicode.com/ model.SM_OutTime;          parameters[6].Value =http://www.mamicode.com/ model.SM_Istf;          parameters[7].Value =http://www.mamicode.com/ model.SM_id;          int rows = HelperSQL.ExecuteCommand(strSql.ToString(), parameters);          return rows;      }    }}
View Code

ajax.bll层代码:

技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Ajax.BLL{    using Ajax.DAL;    using Ajax.Model;  public  class AjaxSM_Class  {      Ajax.DAL.AjaxSM_Class asmc = new DAL.AjaxSM_Class();      /// <summary>      /// 新增      /// </summary>      /// <param name="model"></param>      /// <returns></returns>      public int Add(SM_Class model)      {          return asmc.Add(model);      }      /// <summary>      /// 删除      /// </summary>      /// <param name="SM_id"></param>      /// <returns></returns>      public int Delete(int SM_id)      {          return asmc.Delete(SM_id);      }      /// <summary>      /// 获得所有数据      /// </summary>      /// <param name="strWhere"></param>      /// <returns></returns>      public List<SM_Class> GetList()      {          return asmc.GetList();      }      /// <summary>      /// 更具id找一条数据      /// </summary>      /// <param name="SM_id"></param>      /// <returns></returns>      public List<SM_Class> GetList(int SM_id)      {          return asmc.GetList(SM_id);      }      /// <summary>      /// 更新操作      /// </summary>      /// <param name="model"></param>      /// <returns></returns>      public int Update(SM_Class model)      {          return asmc.Update(model);      }      }}
View Code

ajax.ui层代码:

先说js脚本把,这里是自己封装的一个ajax.js脚本  就是调用自己手写的这个ajaxhelper.js来实现异步刷新请求。

技术分享
var ajaxHelper = {    markXHR: function () {        var xhr;        if (window.XMLHttpRequest) {            xhr = new XMLHttpRequest();        } else { xhr = new ActiveXObject("Micrsoft.XMLHTTP"); }        return xhr;    },    //get请求    ajaxGet: function (url, sucessFun) {        this.ajaxOpt("get", url,null, sucessFun);    },    //post请求    ajaxPost: function (url, data, sucessFun) {        this.ajaxOpt("post", url, data, sucessFun);    },    //定义ajax的get和post请求    //httpmenthod :get,post    //data:发送给服务器的数据,post有值,get为null    //sucessFun成功的回掉函数    ajaxOpt: function (httpMenthod, url, data, sucessFun) {        //转换成小写字符串        var menthod = httpMenthod.toLowerCase();        //定义xmlhttprequest对象        var ajaxobj = this.markXHR();        //异步对象设置参数,总是异步true        ajaxobj.open(httpMenthod, url, true);        //判断是get还上post,设置响应报文        if (menthod == "get") {            //为了使get请求不取自浏览器缓存,而每次都请求服务器                       ajaxobj.setRequestHeader("If-Modified-Since", "0");        } else {            //告诉服务器请求的数据类型            ajaxobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        }        //给一度对象设置回掉函数            ajaxobj.onreadystatechange = function () {            if (ajaxobj.readyState==4&&ajaxobj.status==200) {                var jsonobj = JSON.parse(ajaxobj.responseText);                if (jsonobj.Status == "sucess") {                    sucessFun(jsonobj);                }                else {                    alert(jsonobj.Msg);                }                            }        }        ajaxobj.send(data);    }}
View Code

再者我有引用jquery-1.9.1.js 文件 还有一个msgBox.js作为弹出窗体,jquery我想大家应该都有,我就上传下msgBox的js文件的代码吧。

技术分享
/*{    imghref:图片文件夹所在路径,    waitImg:等待图片名,    bgImg:背景图片名   }*/function MsgBox(s) {    var secondConst = 2000;//系统默认显示时间    var secondWait = 2000;//显示时间    var timer;//计时器    var lf, tp;//左边距,顶边距    var paras = {}; //json参数    function readyMsgBox() {        if (s != null){            if (s.imghref != null) paras.imghref = http://www.mamicode.com/s.imghref; else paras.imghref = http://www.mamicode.com/"images/";            if (s.waitImg != null) paras.waitImg = s.waitImg; else paras.waitImg = "loader.gif";            if (s.bgImg != null) paras.bgImg = s.bgImg; else paras.bgImg = "qzonebg.gif";        }        else paras = { imghref: "./images/", waitImg: "loader.gif", bgImg: "qzonebg.gif" };        paras.waitImgTag = "<img src=http://www.mamicode.com/‘" + paras.imghref + paras.waitImg + "‘ style=‘margin-right:10px;‘ align=‘middle‘/>    ";        preloadImg(new Array(paras.imghref + paras.bgImg, paras.imghref + paras.waitImg));        writeMsgBox();        window.onresize = function(){setPosition();}    }    this.showMsgWait = function (msg) {        this.showMsgAllT(paras.waitImgTag + msg, 0);    }    this.showMsgAllT = function (msg, type) {        clearTimer();        changeIco(type);        gelContainer().innerHTML = msg;        showBox();    }    this.hidBox = function () { hideBox(); };    this.showMsgText = function (msg) {        this.showMsgAllT(msg, 0);    }    this.showMsgInfo = function (msg) {        if (arguments.length > 1) paras.callBack = arguments[1];        showSysMsg(msg, 1);    }    this.showMsgInfoSide = function (eleId, msg, doHid) {//doHid 是否消失        if (arguments.length > 3) paras.callBack = arguments[1];        showSysMsgSideEle(eleId, msg, 1, doHid);    }    function analysisPara(args) {        if (args.length > 1) paras.callBack = args[1];    }    this.showMsgOk = function (msg) {        if (arguments.length > 1) paras.callBack = arguments[1];        showSysMsg(msg, 2);    }    this.showMsgOkSide = function (eleId, msg, doHid) {        if (arguments.length > 3) paras.callBack = arguments[1];        showSysMsgSideEle(eleId, msg, 2, doHid);    }    this.showMsgErr = function (msg) {        if (arguments.length > 1) paras.callBack = arguments[1];        showSysMsg(msg, 3);    }    this.showMsgErrSide = function (eleId,msg,doHid) {        if (arguments.length > 3) paras.callBack = arguments[1];        showSysMsgSideEle(eleId, msg, 3, doHid);    }    this.showSysMsgWTime = function (msg, type, second) {        if (arguments.length > 3) paras.callBack = arguments[3];        changeIco(type);        gelContainer().innerHTML = msg;        showBox();        secondWait = second;        if (second >= 0)            startTimer(emptyMsg);    }    function showSysMsg(msg, type) {        changeIco(type);        gelContainer().innerHTML = msg;        showBox();        secondWait = secondConst;        startTimer(emptyMsg);    }    //---显示在元素右边    function showSysMsgSideEle(eleId, msg, type, doHid) {        changeIco(type);        gelContainer().innerHTML = msg;        setPosSideEle(eleId);        if (doHid) {            secondWait = secondConst;            startTimer(emptyMsg);        } else clearTimer();    }    function setPosSideEle(eleId) {        var wid = document.getElementById(eleId).offsetWidth;        var hig = document.getElementById(eleId).offsetHeight;        var pos = getPos(eleId);        gelBox().style.left = (wid+2 + pos.left) + "px";        gelBox().style.top = (pos.top - (hig/2)) + "px";        gelBox().style.display = "block";    }    //--------------    this.showReqErr=function(){this.showMsgErr("请求错误 ToT!");}    this.showReqOk=function(){this.showMsgOk("操作成功 ^o^!");}    this.showReqVF = function () { this.showSysMsgWTime("会话过期,3秒后自动返回登录界面 -o-!",1,3000); }    this.showWait = function () { this.showMsgWait("请稍后 l _ l ..."); }    //-------------    function startTimer(functionName) {        clearTimer();        timer=window.setTimeout(functionName, secondWait);    }    function clearTimer() {        if (timer != null && timer != undefined) { clearTimeout(timer); }    }    function emptyMsg() {        gelContainer().innerHTML = "";        hideBox();        if (paras.callBack != null) {paras.callBack(); paras.callBack = null; }    }    function writeMsgBox() {        var msgBox = document.createElement("table");        var msgTbody = document.createElement("tbody");        var msgTr = document.createElement("tr");        var msgBoxL = document.createElement("td");        var msgBoxC = document.createElement("td");        var msgBoxR = document.createElement("td");        document.body.appendChild(msgBox);        msgBox.appendChild(msgTbody);        msgTbody.appendChild(msgTr);        msgTr.appendChild(msgBoxL);        msgTr.appendChild(msgBoxC);        msgTr.appendChild(msgBoxR);        msgBox.setAttribute("id", "msgBox");        msgBox.setAttribute("cellpadding", "0");        msgBox.setAttribute("cellspacing", "0");        msgBox.style.cssText = "height:52px;width:auto;position:absolute;z-index:999999;display:none; background:url(" + paras.imghref + paras.bgImg+") 0px -161px;";        msgBoxL.setAttribute("id", "msgBoxL");        msgBoxL.style.cssText = "width:50px;background:url(" + paras.imghref + paras.bgImg+") -7px -108px no-repeat;";        msgBoxC.setAttribute("id", "msgBoxC");        msgBoxC.style.cssText = "width:auto;line-height:51px;color:#666666;font-weight:bold;font-size:14px;padding-right:10px;";        msgBoxR.setAttribute("id", "msgBoxR");        msgBoxR.style.cssText = "width:5px;background:url(" + paras.imghref + paras.bgImg+") 0px 0px no-repeat;";    }    function changeIco(ty) {        if (ty == 0)//none            document.getElementById("msgBoxL").style.width = "10px";        else document.getElementById("msgBoxL").style.width = "50px";        if (ty == 1)//info            document.getElementById("msgBoxL").style.backgroundPosition = "-7px -54px";        else if (ty == 2)//ok            document.getElementById("msgBoxL").style.backgroundPosition = "-7px 0px";        else if (ty == 3)//err            document.getElementById("msgBoxL").style.backgroundPosition = "-7px -108px";    }    function gelBox() {        return document.getElementById("msgBox");    }    function gelContainer() {        return document.getElementById("msgBoxC");    }    function hideBox() {        gelBox().style.display = "none";    }    function showBox() {        setPosition();        gelBox().style.display = "block";    }    function setPosition() {        lf = document.body.clientWidth / 2 - (gelBox().innerHTML.replace(/<[^>].*?>/g, "").length) * 10;        tp = window.screen.height / 2 - 200 + document.documentElement.scrollTop;        gelBox().style.left = lf + "px";        gelBox().style.top = tp + "px";    }    function preloadImg() {        var Arrimg = new Array();        if (typeof (arguments[0]) == "string") Arrimg[0] = arguments[0];        if (typeof (arguments[0]) == "object") {            for (var i = 0; i < arguments[0].length; i++) {                Arrimg[i] = arguments[0][i];            }        }        var img = new Array()        for (var i = 0; i < Arrimg.length; i++) {            img[i] = new Image();            img[i].src = Arrimg[i];        }    }    function getPos(eid) {var target = document.getElementById(eid);var left = 0, top = 0;        do {left += target.offsetLeft || 0;top += target.offsetTop || 0;target = target.offsetParent;} while (target);        return {left: left,top: top}    }    readyMsgBox();}
View Code

还有两个图片技术分享技术分享就是这两个文件,放在一个文件下面 ,用到msgbox的时候把路径添加进去就ok了。

 

因为我的数据传输都是json格式所以在ui层我直接添加了一个ajaxobj.cs实体类

技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Ajax.UI{    public class Ajaxobj    {        private string status;        /// <summary>        /// 状态        /// </summary>        public string Status        {            get { return status; }            set { status = value; }        }        private string msg;        /// <summary>        /// 提示        /// </summary>        public string Msg        {            get { return msg; }            set { msg = value; }        }        private object data;        /// <summary>        /// 数据        /// </summary>        public object Data        {            get { return data; }            set { data =http://www.mamicode.com/ value; }        }        private string url;        /// <summary>        /// 地址        /// </summary>        public string Url        {            get { return url; }            set { url = value; }        }    }    public enum Estatus {        sucess=200,        error=500    }}
View Code

中间有个枚举,是用来判断正确还是错误的..

因为我是用的简单三层就没有下common层,所以在ui层我田间了一个转换序列化json格式的kiss.cs类

技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Ajax.UI{    public static class kiss    {        /// <summary>        /// json序列化        /// </summary>        /// <param name="model"></param>        /// <returns></returns>        public static string GetJson(object model) {            System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();            return js.Serialize(model);        }    }}
View Code

大体的框架就这些,这些东西我没有怎么去做优化,主要是实现功能 

所以想现在上getlist.aspx动态页面的代码,都是用jquery异步请求一般处理程序,有些的不好的地方,希望大家能指出来,我好进行改进,还有一个我没有写样式,就连简单的边框也没有增加。哎,说多了,真的是泪,本来想前两天就把这个东西总结出来的,可是元旦事多,没有办法,只要今天来把它写完,上传,然后出去看人,希望不要有踩踏事件,昨天出去了下,从地铁出来走了半个小时,坐朋友车去了一趟小蛮腰,啥也没有干,感受了下,堵车的滋味,哎...说多了都是泪.另一个朋友说开个车去爬山,堵在半路上,上也不是下也不是,可恶的单行道...呵呵,在这里希望大家开开心心过个节,2014年对我来说真的太悲催了,主要是太菜了...都是泪呀.又闲扯了这么多鬼话.

技术分享
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="getlist.aspx.cs" Inherits="Ajax.UI.getlist" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <script src=http://www.mamicode.com/"js/jquery-1.9.1.js"></script>    <script src=http://www.mamicode.com/"js/msgBox.js"></script>    <script src=http://www.mamicode.com/"js/AjaxHelper.js"></script>    <title></title>    <style>        /*设置编辑的样式和绝对定位 和透明度*/        #edit {        display:none;        position:absolute;        background-color: #878585;        height:100%;        width:100%;        opacity:0.6;        }    </style>    <script>        var msg;                      $(function () {            // //实例化js弹出对话框,里面存放图片的位置            msg = new MsgBox({ imghref: "/js/imgs/" });            //执行ajaxhelper.js文件发出异步请求            ajaxHelper.ajaxGet("getdata.ashx?type=getdata", function (jsonobj) {                //判断jsonobj状态                if (jsonobj.Status == "error") {                    //弹出msgbox的对话框                   msg.showMsgErr(jsonobj.Msg);                } else {                    //hide();                    //弹出msgbox的对话框                    MarkOpt(jsonobj.Data);                }            })            $("#btedit").click(function () {                //获取表单类的文本值                var parms = $("#f1").serialize();                //判断cid是否为空,为空做新增操作,不为空做编辑操作                if ($("#cid").val() == "") {                                     //异步post请求新增                    ajaxHelper.ajaxPost("getdata.ashx?type=add", parms, function (jsonobj) {                        if (jsonobj.Status == "error") {                            msg.showMsgErr(jsonobj.Msg)                        } else {                            msg.showMsgOk(jsonobj.Msg, function () {                                window.location = window.location;                            })                        }                    })                } else {                    //异步post请求编辑操作                    ajaxHelper.ajaxPost("getdata.ashx?type=btedit", parms, function (jsonobj) {                        if (jsonobj.Status == "error") {                            msg.showMsgErr(jsonobj.Msg);                        } else {                            msg.showMsgOk(jsonobj.Msg, function () {                                //刷新当前列表页面  window.location.reload();                                window.location = window.location;                            })                        }                    })                }            })            //打开新增面板            $("#add").click(function () {                //加载新增框                $("#edit").show().css("top", 200).css("left", 0);                //文本框里面的内容清空                $("#cid").val("");                $("#idnane").val("");                $("#grade").val("");                $("#class").val("");                $("#sex").val("");                $("#age").val("");                $("#time").val("");            })        })               //获取jsonajax的json.data数据转换成td        function MarkOpt(data) {            //获取table 设置的id =tb 的dom元素            var table = document.getElementById("tb");            //遍历data数据 生成行和列  填充数据            for (var i = 0; i < data.length; i++) {                //创建tr                var row = table.insertRow(-1);                //创建tr行中单元格td                row.insertCell(-1).innerHTML = data[i].SM_id;                row.insertCell(-1).innerHTML = data[i].SM_name;                row.insertCell(-1).innerHTML = data[i].SM_Grade;                row.insertCell(-1).innerHTML = data[i].SM_Classes;                row.insertCell(-1).innerHTML = data[i].SM_Gender;                row.insertCell(-1).innerHTML = data[i].SM_Age;                row.insertCell(-1).innerHTML = fmtdt(data[i].SM_OutTime);                row.insertCell(-1).innerHTML = "<a href=‘javascript:void(0)‘ onclick=‘Del("+data[i].SM_id+",this)‘ >删除</a>|<a href=‘javascript:void(0)‘ onclick=‘Edit("+data[i].SM_id+")‘ >编辑</a>";            }        }        function Del(id, t) {            //弹出对话框问是否删除            if (confirm("确定要删除?") == false) {                return;            }            //调用ajaxhelper的js脚本 发送异步请求 交给一般处理程序处理            ajaxHelper.ajaxGet("getdata.ashx?type=del&id=" + id, function (jsonajax) {                //判断jsonajax状态的值                if (jsonajax.Status == "error") {                    //利用msgbox对话框弹出窗口                    msg.showMsgErr(jsonajax.Msg);                                   }                else {                    //利用msgbox对话框弹出窗口                    msg.showMsgOk(jsonajax.Msg, function () {                        //删除td $(t)=this 表示当前行                        $(t).parent().parent().remove();                    })                                 }            })        }        //编辑的方法给文本框赋值        function Edit(id) {            //打开隐藏面板            $("#edit").show().css("top", 200).css("left", 0);            //异步请求            ajaxHelper.ajaxGet("getdata.ashx?type=getedit&id=" + id, function (jsonobj) {                //判断请求是否正确                if (jsonobj.Status == "error") {                    //弹出错误提示                    msg.showMsgErr(jsonobj.Msg);                }                else {                    //给文本框赋值                    $("#cid").val(jsonobj.Data[0].SM_id);                    $("#idnane").val(jsonobj.Data[0].SM_name);                    $("#grade").val(jsonobj.Data[0].SM_Grade);                    $("#class").val(jsonobj.Data[0].SM_Classes);                    $("#sex").val(jsonobj.Data[0].SM_Gender);                    $("#age").val(jsonobj.Data[0].SM_Age);                    $("#time").val(fmtdt(jsonobj.Data[0].SM_OutTime));                }            })        }                   </script>    <script type="text/javascript">        //负责格式化json返回的特殊日期格式为 yyyy-mm-dd hh:mm:ss        function fmtdt(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 + " " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds();        }        //关闭新增或者编辑面板        function noshow() {            $("#edit").hide();        }           </script>    </head><body>    <form id="form1" runat="server" >    <table id="tb">        <tr>            <th>id</th>            <th>姓名</th>            <th>班级</th>            <th>年级</th>            <th>性别</th>            <th>年龄</th>            <th>时间</th>            <th>操作</th>        </tr>        </table>        <input type="button" value=http://www.mamicode.com/"新增" id="add"  />    </form>    <div id="edit">        <form id="f1">            <input type ="hidden" id="cid"  name="cid" value =http://www.mamicode.com/"1" />            <table id="tb1" class="tb2">                           <tr>                    <th>姓名</th>                    <td><input type="text" id="idnane" name="name" value=http://www.mamicode.com/"2" /></td>                </tr>                 <tr>                    <th>班级</th>                    <td><input type="text" id="grade" name="grade" value=http://www.mamicode.com/"3" /></td>                </tr>                 <tr>                    <th>年级</th>                    <td><input type="text" id="class" name="class" value=http://www.mamicode.com/"4" /></td>                </tr>                  <tr>                    <th>性别</th>                    <td><input type="text" id="sex" name="sex" value=http://www.mamicode.com/"5" /></td>                </tr>                    <tr>                    <th>年龄</th>                    <td><input type="text" id="age" name="age" value=http://www.mamicode.com/"6" /></td>                </tr                 <tr>                    <th>时间</th>                    <td><input type="text" id="time" name="time" value=http://www.mamicode.com/"7" /></td>                </tr>                <tr>                    <td>                        <input type="button" value=http://www.mamicode.com/"提交" id="btedit" />                        <input type="button" value=http://www.mamicode.com/"关闭" onclick="noshow();" />                    </td>                </tr>            </table>                 </form>    </div></body></html>
View Code

这个里面大多数我都做了注视,希望大家看的明白,还有我的新增和编辑是一个面板所以会有一个判断

里面有个好用的jquery时间转换.可以作为资源库去使用.希望大家能直接调用就好了.

一般处理程序的代码 getdata.ashx

技术分享
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Ajax.UI{    using Ajax.Model;    using Ajax.BLL;    /// <summary>    /// getdata 的摘要说明    /// </summary>    public class getdata : IHttpHandler    {        Ajax.BLL.AjaxSM_Class asc = new AjaxSM_Class();        Ajax.Model.SM_Class sc = new SM_Class();        Ajaxobj obj = new Ajaxobj();        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            string strtype = context.Request.QueryString["type"];            switch (strtype)            {                case "getdata":                    getlist();                    break;                case "del":                    Del();                    break;                case "getedit":                    getedit();                    break;                case"btedit":                    btedit();                    break;                case"add":                    add();                    break;                default:                    break;            }                  }        /// <summary>        /// 新增        /// </summary>        private void add()        {            try            {                string id = HttpContext.Current.Request.Form["cid"];                postMethod(id);                int i = asc.Add(sc);                if (i > 0)                {                    obj.Msg = "新增成功";                    obj.Status = Estatus.sucess.ToString();                    HttpContext.Current.Response.Write(kiss.GetJson(obj));                }            }            catch (Exception ex)            {                WriteError(ex);            }                 }        /// <summary>        /// 编辑数据        /// </summary>        private void btedit()        {            try            {                string id = HttpContext.Current.Request.Form["cid"];                postMethod(id);              int i=asc.Update(sc);              if (i>0)              {                  obj.Msg = "修改成功成功";                  obj.Status = Estatus.sucess.ToString();                  HttpContext.Current.Response.Write(kiss.GetJson(obj));              }            }            catch (Exception ex)            {                WriteError(ex);            }                   }        //获取post传递过来的数据        private void postMethod(string id)        {            if (!string.IsNullOrEmpty(id))            {                sc.SM_id = int.Parse(id);            }            //string id = HttpContext.Current.Request.Form["cid"];            string name = HttpContext.Current.Request.Form["name"];            string classes = HttpContext.Current.Request.Form["class"];            string sex = HttpContext.Current.Request.Form["sex"];            string age = HttpContext.Current.Request.Form["age"];            string time = HttpContext.Current.Request.Form["time"];            string grade = HttpContext.Current.Request.Form["grade"];                       sc.SM_name = name;            sc.SM_Grade = grade;            sc.SM_Classes = classes;            sc.SM_Gender = sex;            sc.SM_Age = int.Parse(age);            sc.SM_OutTime = DateTime.Parse(time);            sc.SM_Istf = false;        }        /// <summary>        /// 获取一条数据        /// </summary>        private void getedit()        {            try            {                string id = HttpContext.Current.Request.QueryString["id"];                List<SM_Class> list = asc.GetList(int.Parse(id));                if (list.Count>0)                {                    obj.Data = list;                    obj.Status = Estatus.sucess.ToString();                    obj.Msg = "获取数据成功";                    HttpContext.Current.Response.Write(kiss.GetJson(obj));                }            }            catch (Exception ex)            {                WriteError(ex);            }                   }        /// <summary>        /// 删除        /// </summary>        private void Del()        {            try            {               string strid= HttpContext.Current.Request.QueryString["id"];                int id=asc.Delete(int.Parse(strid));                if (id>0)                {                    obj.Status = Estatus.sucess.ToString();                    obj.Msg = "数据删除成功";                    HttpContext.Current.Response.Write(kiss.GetJson(obj));                }            }            catch (Exception ex)            {              WriteError(ex);            }        }        /// <summary>        /// 获取数据        /// </summary>        private void getlist()        {            try            {                List<SM_Class> List = asc.GetList();                if (List.Count > 0)                {                    //表示成功                    obj.Status = Estatus.sucess.ToString();                    obj.Msg = "获取数据成功";                    obj.Data = List;                    HttpContext.Current.Response.Write(kiss.GetJson(obj));                }            }            catch (Exception ex)            {                WriteError(ex);            }                 }        private void WriteError(Exception ex)        {            obj.Status = Estatus.error.ToString();            obj.Msg = ex.Message;            HttpContext.Current.Response.Write(kiss.GetJson(obj));        }        public bool IsReusable        {            get            {                return false;            }        }    }}
View Code

 

一套手写ajax加一般处理程序的增删查改