倾述下感受: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;
}
}
}
}