倾述下感受: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,),
new SqlParameter("@SM_Grade", SqlDbType.VarChar,),
new SqlParameter("@SM_Class", SqlDbType.VarChar,),
new SqlParameter("@SM_Gender", SqlDbType.VarChar,),
new SqlParameter("@SM_Age", SqlDbType.Int,),
new SqlParameter("@SM_OutTime", SqlDbType.DateTime),
new SqlParameter("@SM_Istf", SqlDbType.Bit,)};
parameters[].Value = model.SM_name;
parameters[].Value = model.SM_Grade;
parameters[].Value = model.SM_Classes;
parameters[].Value = model.SM_Gender;
parameters[].Value = model.SM_Age;
parameters[].Value = model.SM_OutTime;
parameters[].Value = model.SM_Istf; object obj = HelperSQL.ExecuteCommand(strSql.ToString(), parameters);
if (obj == null)
{
return ;
}
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,)
};
parameters[].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[];
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,)
};
parameters[].Value = SM_id;
DataSet ds = HelperSQL.GetDataSet(strSql.ToString(),parameters);
DataTable dt = ds.Tables[];
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() == "") || (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,),
new SqlParameter("@SM_Grade", SqlDbType.VarChar,),
new SqlParameter("@SM_Class", SqlDbType.VarChar,),
new SqlParameter("@SM_Gender", SqlDbType.VarChar,),
new SqlParameter("@SM_Age", SqlDbType.Int,),
new SqlParameter("@SM_OutTime", SqlDbType.DateTime),
new SqlParameter("@SM_Istf", SqlDbType.Bit,),
new SqlParameter("@SM_id", SqlDbType.Int,)};
parameters[].Value = model.SM_name;
parameters[].Value = model.SM_Grade;
parameters[].Value = model.SM_Classes;
parameters[].Value = model.SM_Gender;
parameters[].Value = model.SM_Age;
parameters[].Value = model.SM_OutTime;
parameters[].Value = model.SM_Istf;
parameters[].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", "");
} else {
//告诉服务器请求的数据类型
ajaxobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
//给一度对象设置回掉函数 ajaxobj.onreadystatechange = function () {
if (ajaxobj.readyState==&&ajaxobj.status==) {
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 = ;//系统默认显示时间
var secondWait = ;//显示时间
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, );
}
this.showMsgAllT = function (msg, type) {
clearTimer();
changeIco(type);
gelContainer().innerHTML = msg;
showBox();
}
this.hidBox = function () { hideBox(); };
this.showMsgText = function (msg) {
this.showMsgAllT(msg, );
}
this.showMsgInfo = function (msg) {
if (arguments.length > ) paras.callBack = arguments[];
showSysMsg(msg, );
}
this.showMsgInfoSide = function (eleId, msg, doHid) {//doHid 是否消失
if (arguments.length > ) paras.callBack = arguments[];
showSysMsgSideEle(eleId, msg, , doHid);
}
function analysisPara(args) {
if (args.length > ) paras.callBack = args[];
}
this.showMsgOk = function (msg) {
if (arguments.length > ) paras.callBack = arguments[];
showSysMsg(msg, );
}
this.showMsgOkSide = function (eleId, msg, doHid) {
if (arguments.length > ) paras.callBack = arguments[];
showSysMsgSideEle(eleId, msg, , doHid);
}
this.showMsgErr = function (msg) {
if (arguments.length > ) paras.callBack = arguments[];
showSysMsg(msg, );
}
this.showMsgErrSide = function (eleId,msg,doHid) {
if (arguments.length > ) paras.callBack = arguments[];
showSysMsgSideEle(eleId, msg, , doHid);
}
this.showSysMsgWTime = function (msg, type, second) {
if (arguments.length > ) paras.callBack = arguments[];
changeIco(type);
gelContainer().innerHTML = msg;
showBox();
secondWait = second;
if (second >= )
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+ + pos.left) + "px";
gelBox().style.top = (pos.top - (hig/)) + "px";
gelBox().style.display = "block";
}
//--------------
this.showReqErr=function(){this.showMsgErr("请求错误 ToT!");}
this.showReqOk=function(){this.showMsgOk("操作成功 ^o^!");}
this.showReqVF = function () { this.showSysMsgWTime("会话过期,3秒后自动返回登录界面 -o-!",,); }
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", "");
msgBox.setAttribute("cellspacing", "");
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 == )//none
document.getElementById("msgBoxL").style.width = "10px";
else document.getElementById("msgBoxL").style.width = "50px";
if (ty == )//info
document.getElementById("msgBoxL").style.backgroundPosition = "-7px -54px";
else if (ty == )//ok
document.getElementById("msgBoxL").style.backgroundPosition = "-7px 0px";
else if (ty == )//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 / - (gelBox().innerHTML.replace(/<[^>].*?>/g, "").length) * ;
tp = window.screen.height / - + document.documentElement.scrollTop;
gelBox().style.left = lf + "px";
gelBox().style.top = tp + "px";
}
function preloadImg() {
var Arrimg = new Array();
if (typeof (arguments[]) == "string") Arrimg[] = arguments[];
if (typeof (arguments[]) == "object") {
for (var i = ; i < arguments[].length; i++) {
Arrimg[i] = arguments[][i];
}
}
var img = new Array()
for (var i = ; i < Arrimg.length; i++) {
img[i] = new Image();
img[i].src = Arrimg[i];
}
}
function getPos(eid) {var target = document.getElementById(eid);var left = , top = ;
do {left += target.offsetLeft || ;top += target.offsetTop || ;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=,
error=
}
}

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

因为我是用的简单三层就没有下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: #;
height:%;
width:%;
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", ).css("left", );
//文本框里面的内容清空
$("#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 = ; i < data.length; i++) {
//创建tr
var row = table.insertRow(-);
//创建tr行中单元格td
row.insertCell(-).innerHTML = data[i].SM_id;
row.insertCell(-).innerHTML = data[i].SM_name;
row.insertCell(-).innerHTML = data[i].SM_Grade;
row.insertCell(-).innerHTML = data[i].SM_Classes;
row.insertCell(-).innerHTML = data[i].SM_Gender;
row.insertCell(-).innerHTML = data[i].SM_Age;
row.insertCell(-).innerHTML = fmtdt(data[i].SM_OutTime);
row.insertCell(-).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", ).css("left", );
//异步请求
ajaxHelper.ajaxGet("getdata.ashx?type=getedit&id=" + id, function (jsonobj) {
//判断请求是否正确
if (jsonobj.Status == "error") {
//弹出错误提示
msg.showMsgErr(jsonobj.Msg);
}
else {
//给文本框赋值
$("#cid").val(jsonobj.Data[].SM_id);
$("#idnane").val(jsonobj.Data[].SM_name);
$("#grade").val(jsonobj.Data[].SM_Grade);
$("#class").val(jsonobj.Data[].SM_Classes);
$("#sex").val(jsonobj.Data[].SM_Gender);
$("#age").val(jsonobj.Data[].SM_Age);
$("#time").val(fmtdt(jsonobj.Data[].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(")/", ""), ));
var month = date.getMonth() + < ? "" + (date.getMonth() + ) : date.getMonth() + ;
var currentDate = date.getDate() < ? "" + 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 ="" />
<table id="tb1" class="tb2"> <tr>
<th>姓名</th>
<td><input type="text" id="idnane" name="name" value="" /></td>
</tr>
<tr>
<th>班级</th>
<td><input type="text" id="grade" name="grade" value="" /></td>
</tr>
<tr>
<th>年级</th>
<td><input type="text" id="class" name="class" value="" /></td>
</tr>
<tr>
<th>性别</th>
<td><input type="text" id="sex" name="sex" value="" /></td>
</tr>
<tr>
<th>年龄</th>
<td><input type="text" id="age" name="age" value="" /></td>
</tr
<tr>
<th>时间</th>
<td><input type="text" id="time" name="time" value="" /></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 > )
{
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>)
{
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>)
{
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>)
{
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 > )
{
//表示成功
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;
}
}
}
}

一套手写ajax加一般处理程序的增删查改的更多相关文章

  1. ASP.NET使用EasyUI-DataGrid + ashx + JQuery Ajax:实现数据的增删查改,查询和分页!

    转自:http://www.cnblogs.com/lt-style/p/3457399.html 数据表: 学生表:学生编号.姓名.性别.班级编号.年龄 班级表:班级编号.班级名称 开发过程: 1. ...

  2. .net学习之Session、Cookie、手写Ajax代码以及请求流程

    1.IIS 7 以上版本集成了两种模式,一种是经典模式,一种是集成模式(直接将asp.net框架集成到IIS中) 2.浏览器和服务器端通过什么技术来实现的?Socket(套接字),通信的语法是HTTP ...

  3. 前端面试题整理——手写AJAX

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 不借助jquery封装好的ajax,你能用js手写ajax框架吗

    不借助jquery封装好的ajax,你能手写ajax框架吗?最基础的ajax框架,一起来围观吧. .创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); ...

  5. 使用HibernateTemplate手写源生SQL的【增删改查】 操作

    使用 HibernateTemplate 进行持久化操作 执行的时候不报错,但数据库的持久化操作没有一点作用,问了好多人,说没有声明事务和提交事务, 用的是别人搭的的架构,事务已经有了,自动提交事务的 ...

  6. extj6.0写增删查改(1)-------查询

    本文主要实现的效果是:点击查询按钮,根据form中的条件,在Grid中显示对应的数据(如果form为空,显示全部数据) 一.静态页面 1.查询按钮 { text:'查询', handler: 'onS ...

  7. 怎么手写Ajax实现异步刷新

    所谓的异步刷新,就是不刷新整个网页进行更新数据. 只有通过js才能实现Ajax,进而实行异步刷新 表单提交数据和Ajax提交数据的区别:表单提交是提交的整个页面中的数据,提交数据之后会抛弃之前的页面( ...

  8. 如何手写Ajax实现异步刷新

    所谓的异步刷新,就是不刷新整个网页进行更新数据. 只有通过js才能实现Ajax,进而实行异步刷新 表单提交数据和Ajax提交数据的区别:表单提交是提交的整个页面中的数据,提交数据之后会抛弃之前的页面( ...

  9. 手写Ajax的意义所在,从青铜到钻石!

    话说菩提祖师打了孙猴子三板子  然后悟空学会72般变化以及一身神通 对待这个问题作为面试者要思考更加深层次的意义 才更能获得认可 实际上写的ajax 很能看出一个的水平 贴几段代码就可以看出水平的高低 ...

随机推荐

  1. java后台开发- NOTE

    2015-1-6: IDEA servlet-api.jar idea从14升级到15后,发现 import javax.servlet.AsyncContext; 找不到,右击工程,open mod ...

  2. oracle正则表达式regexp_like的用法详解

    oracle正则表达式regexp_like的用法详解 /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与IN ...

  3. Adobe Acrobat 9 Pro 简体中文正式版(免激活)

    软件语言:简体中文版本性质:官方正式版(免激活,非破解) Mac & PC [SN]: 1118-4018-6583-4956-2486-7805 修改 Abcpy.ini 可实现免序列号免激 ...

  4. 对Msn协议的一点点研究

    这个也是好奇msn的协议还是2011年的时候写的, 就在网上找啊找啊, 可惜要不是不能用就是C++代码还有就是不完整, 到最后我也没弄成功,只到了下面这步就挂掉了...... 登录成功<=SBS ...

  5. 接口返回json

    use Mojolicious::Lite; use JSON qw/encode_json decode_json/; # /foo?user=sri get '/api' => sub { ...

  6. mongodb cpu 超过100%居高不下的原因分析过程

    -- mongodb cpu is high, infomation as below: 1 the message in the http://10.100.1.11:28017/ as below ...

  7. iOS 使用Method Swizzling隐藏Status Bar

    在iOS 6中,隐藏Status Bar很的简单. // iOS 6及曾经,隐藏状态栏 [[UIApplication sharedApplication] setStatusBarHidden:YE ...

  8. C#高级编程三十天----泛型结构,泛型方法,泛型托付

    泛型结构 泛型结构和泛型类差点儿是一直的,仅仅是泛型结构没有继承的特性..NET平台提供的一个泛型结构是(可空类型)Nullablle<T>.可空类型的引入,主要是为了解决数据库语言中的数 ...

  9. oracle添加用户及权限

    CREATE USER qdcenter 用户名 IDENTIFIED BY qdcenter   密码 DEFAULT TABLESPACE data1  默认表空间 TEMPORARY TABLE ...

  10. Jade 报错

    今天写jade的时候遇到一个问题 Invalid indentation,you can use tabs or spaces but not both问题 经过查证原来是 在jade模板中 同时存在 ...