倾述下感受: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 } }
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 = DBNull.Value; } //加入这个参数 sqlcmd.Parameters.Add(item); } } //返回连接和命令 return sqlcmd; } } }
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 = model.SM_name; parameters[1].Value = model.SM_Grade; parameters[2].Value = model.SM_Classes; parameters[3].Value = model.SM_Gender; parameters[4].Value = model.SM_Age; parameters[5].Value = model.SM_OutTime; parameters[6].Value = 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 [email protected]_id"); SqlParameter[] parameters = { new SqlParameter("@SM_id", SqlDbType.Int,4) }; parameters[0].Value = 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 [email protected]_id"); SqlParameter[] parameters = { new SqlParameter("@SM_id", SqlDbType.Int,4) }; parameters[0].Value = 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("[email protected]_name,"); strSql.Append("[email protected]_Grade,"); strSql.Append("[email protected]_Class,"); strSql.Append("[email protected]_Gender,"); strSql.Append("[email protected]_Age,"); strSql.Append("[email protected]_OutTime,"); strSql.Append("[email protected]_Istf"); strSql.Append(" where [email protected]_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 = model.SM_name; parameters[1].Value = model.SM_Grade; parameters[2].Value = model.SM_Classes; parameters[3].Value = model.SM_Gender; parameters[4].Value = model.SM_Age; parameters[5].Value = model.SM_OutTime; parameters[6].Value = model.SM_Istf; parameters[7].Value = model.SM_id; int rows = HelperSQL.ExecuteCommand(strSql.ToString(), parameters); return rows; } } }
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); } } }
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); } }
再者我有引用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 = s.imghref; else paras.imghref = "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=‘" + 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(); }
还有两个图片就是这两个文件,放在一个文件下面 ,用到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 = value; } } private string url; /// <summary> /// 地址 /// </summary> public string Url { get { return url; } set { url = value; } } } public enum Estatus { sucess=200, error=500 } }
中间有个枚举,是用来判断正确还是错误的..
因为我是用的简单三层就没有下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); } } }
大体的框架就这些,这些东西我没有怎么去做优化,主要是实现功能
所以想现在上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="js/jquery-1.9.1.js"></script> <script src="js/msgBox.js"></script> <script src="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="新增" id="add" /> </form> <div id="edit"> <form id="f1"> <input type ="hidden" id="cid" name="cid" value ="1" /> <table id="tb1" class="tb2"> <tr> <th>姓名</th> <td><input type="text" id="idnane" name="name" value="2" /></td> </tr> <tr> <th>班级</th> <td><input type="text" id="grade" name="grade" value="3" /></td> </tr> <tr> <th>年级</th> <td><input type="text" id="class" name="class" value="4" /></td> </tr> <tr> <th>性别</th> <td><input type="text" id="sex" name="sex" value="5" /></td> </tr> <tr> <th>年龄</th> <td><input type="text" id="age" name="age" value="6" /></td> </tr <tr> <th>时间</th> <td><input type="text" id="time" name="time" value="7" /></td> </tr> <tr> <td> <input type="button" value="提交" id="btedit" /> <input type="button" value="关闭" onclick="noshow();" /> </td> </tr> </table> </form> </div> </body> </html>
这个里面大多数我都做了注视,希望大家看的明白,还有我的新增和编辑是一个面板所以会有一个判断
里面有个好用的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; } } } }