博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EasyUI的增删查改(后台ASP.NET)
阅读量:4693 次
发布时间:2019-06-09

本文共 12891 字,大约阅读时间需要 42 分钟。

转自:

某某人曾经跟我说,你们做系统不就是增删查改吗。

是啊,很多时候我们就是把用户的数据同后台数据库进行增删查改的沟通。

但是,把CRUD(增删查改)做得好,可能也不是一件很简单的事,

这里要展现的是我现在能写出来最好的Demo了,水平有限,小弟在校学生一枚,还请各位看客多多指教。

 

Demo前台使用JQuery EasyUI 请求一般处理程序,一般处理程序调用BLL层方法,BLL==>DAL,一个简单三层的效果。

项目结构如图:

 

 

一、数据库表结构

    这里只创建一个UserInfo表,表中字段有:UserID,CardID,UPwd,UName,UAge,IsDel,AddDate

 

 

二、后台处理CRUD

    后台处理添加、删除(软删除)、编辑、查询(分页)。其中查询包括:分页和搜索处理所有有点麻烦,

    1、先介绍数据访问层(DAL)中的方法

        这里是,添加、删除、编辑、分页查询的方法。

        前台查询的参数存储在NameValueCollection中,然后在DAL层中的PreSearchParameter方法中把查询参数装配到sql语句和SqlParameter中,

        在DAL层中获取的数据是DataTable,然后在BLL层中转换成JSON格式的数据传给EasyUI展示。

 

using System;using System.Text;using System.Data;using System.Data.SqlClient;using Dedeyi.Common;using System.Collections;using System.Collections.Generic;using System.Collections.Specialized;namespace Dedeyi.ZSF.DAL{   public class UserInfoDAL    {         ///         /// 增加一条数据        ///         public int Add(Dedeyi.ZSF.Model.UserInfo model)        {            StringBuilder strSql=new StringBuilder();            strSql.Append("insert into UserInfo(");            strSql.Append("CardID,UPwd,UName,UAge,IsDel,AddDate)");            strSql.Append(" values (");            strSql.Append("@CardID,@UPwd,@UName,@UAge,@IsDel,@AddDate)");            strSql.Append(";select @@IDENTITY");            SqlParameter[] parameters = {                    new SqlParameter("@CardID", SqlDbType.VarChar,16),                    new SqlParameter("@UPwd", SqlDbType.VarChar,64),                    new SqlParameter("@UName", SqlDbType.NVarChar,16),                    new SqlParameter("@UAge", SqlDbType.Int,4),                    new SqlParameter("@IsDel", SqlDbType.Bit,1),                    new SqlParameter("@AddDate", SqlDbType.SmallDateTime)};            parameters[0].Value = model.CardID;            parameters[1].Value = model.UPwd;            parameters[2].Value = model.UName;            parameters[3].Value = model.UAge;            parameters[4].Value = model.IsDel;            parameters[5].Value = model.AddDate;            object obj = SQLHelper.ExecuteScalar(strSql.ToString(),parameters);            if (obj == null)            {                return 0;            }            else            {                return Convert.ToInt32(obj);            }               }       ///        /// 删除用户       ///        ///         public void Del(int keyid)         {            //此处软删除            string s = "update UserInfo set IsDel=1 where UserID="+keyid;            SQLHelper.ExecuteNoneQuery(s,null);        }            ///        ///更新一条数据        ///        public bool Update(Dedeyi.ZSF.Model.UserInfo model)        {            StringBuilder strSql = new StringBuilder();            strSql.Append("update [UserInfo] set ");            strSql.Append(" CardID=@CardID,");            strSql.Append(" UPwd=@UPwd,");            strSql.Append(" UName=@UName,");            strSql.Append(" UAge=@UAge ");            //strSql.Append(" IsDel=@IsDel,");            //strSql.Append("AddDate=@AddDate");            strSql.Append(" where UserID=@UserID");            SqlParameter[] parameters = {                new SqlParameter("@UserID", SqlDbType.Int,4),                new SqlParameter("@CardID", SqlDbType.VarChar,16),                new SqlParameter("@UPwd", SqlDbType.VarChar,64),                new SqlParameter("@UName", SqlDbType.NVarChar,16),                new SqlParameter("@UAge", SqlDbType.Int,4),                //new SqlParameter("@IsDel", SqlDbType.Bit,1),                //new SqlParameter("@AddDate", SqlDbType.DateTime),            };            parameters[0].Value = model.UserID;            parameters[1].Value = model.CardID;            parameters[2].Value = model.UPwd;            parameters[3].Value = model.UName;            parameters[4].Value = model.UAge;            //parameters[5].Value = model.IsDel;            //parameters[6].Value = model.AddDate;            int rows = SQLHelper.ExecuteNoneQuery(strSql.ToString(),parameters);            if (rows > 0)            {                return true;            }            else            {                return false;            }        }        //分页相关的        #region         ///         /// 获取条件查询数据行数        ///         /// 关键字,UName,UAge,在前台请求形成Hashtable作为参数时候要用到这个        /// 
数据行数
public int GetSearchCount(NameValueCollection nv) { string sc; SqlParameter[] ps; PreSearchParameter(nv, out sc, out ps); string sql = "select count(0) from UserInfo where " + sc; return Convert.ToInt32(SQLHelper.ExecuteScalar(sql, ps)); } /// /// 获取条件查询的分页数据 /// /// /// /// 关键字,UName,UAge,在前台请求形成Hashtable作为参数时候要用到这个 ///
public DataTable GetSearchPage(int index, int size,NameValueCollection nv) { string f = "UserID,CardID,UPwd,UName,UAge,AddDate"; string o = "AddDate DESC"; return GetSearchePage(index,size,nv,f,o); } /// /// 获取分页数据 /// /// 当前页 /// 每一页数据行数 /// 查询条件key是字段,value是对应的值 /// 要返回的字段 /// 排序规则不要order by ,如 AddDate desc,userid asc ///
private DataTable GetSearchePage(int index, int size, NameValueCollection nv, string fieldList,string orderby) { string sc ; //过滤条件 SqlParameter[] ps; PreSearchParameter(nv,out sc,out ps); string sql = "select * from (select {0},ROW_NUMBER() over(order by {1}) as num from UserInfo where {2}) as tb"; sql += " where num between {3} and {4}"; sql = string.Format(sql, fieldList, orderby, sc, (index - 1) * size + 1, index * size); return SQLHelper.GetDataTable(sql, ps); } /// /// 把查询参数转换为sql,和SqlParameter /// /// 关键字,UName,UAge,在前台请求形成Hashtable作为参数时候要用到这个 /// /// private void PreSearchParameter(NameValueCollection nv, out string sql, out SqlParameter[] paras) { sql = " '1'='1' and IsDel=0"; List
list = new List
(); if (!string.IsNullOrEmpty(nv["UName"])) { sql += " and UName like @UName"; list.Add(new SqlParameter("@UName", "%" + nv["UName"] + "%")); } int tAge; if (int.TryParse(nv["UAge"],out tAge)) { sql += " and UAge=" + nv["UAge"]; } paras = list.ToArray(); } #endregion }}
View Code

 

    2、然后在业务逻辑层,做一些逻辑处理(JSON格式转换、添加预设值)

using Dedeyi.ZSF.DAL;using Dedeyi.ZSF.Model;using Dedeyi.Common;using System;using System.Collections.Specialized;namespace Dedeyi.ZSF.BLL{   public class UserInfoBLL    {        UserInfoDAL dal=new UserInfoDAL();       ///        /// 添加       ///        ///        /// 
public int Add(UserInfo user) { user.AddDate = DateTime.Now; user.IsDel = false; return dal.Add(user); } /// /// 删除用户 /// /// public void Del(int keyid) { dal.Del(keyid); } /// ///更新一条数据 /// public bool Update(Dedeyi.ZSF.Model.UserInfo model) { return dal.Update(model); } //分页相关的 #region /// /// 获取条件查询数据行数 /// /// 关键字,UName,UAge,在前台请求形成Hashtable作为参数时候要用到这个 ///
数据行数
public int GetSearchCount(NameValueCollection ht) { return dal.GetSearchCount(ht); } /// /// 获取条件查询的分页数据 /// /// /// /// 关键字,UName,UAge,在前台请求形成Hashtable作为参数时候要用到这个 ///
json格式的数据集
public string GetSearchPage(int index, int size,NameValueCollection ht) { return JSONHelper.DataTableToJson(dal.GetSearchPage(index,size,ht)); } #endregion }}
View Code

 

    3、界面层的一般处理程序,处理一般请求

using System.Web;using Dedeyi.Common;using Dedeyi.ZSF.Model;using Dedeyi.ZSF.BLL;using System;namespace WebApp.Handler{    ///     /// UserHandler 的摘要说明    ///     public class UserHandler : IHttpHandler,System.Web.SessionState.IRequiresSessionState    {        private HttpContext context;        private UserInfoBLL bll =new UserInfoBLL();        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            //权限检查            //            try            {                string sType = context.Request["reqTypes"];                if (string.IsNullOrEmpty(sType))                {                    context.Response.Write("参数错误");                    return;                }                this.context = context;                switch (sType.ToLower())                {                    case "add":                        Add();                        break;                    case "del":                        Del();                        break;                    case "update":                        Update();                        break;                    case "search":                        Search();                        break;                }            }            catch (Exception ex)             {                context.Response.Write(new ReqMsg(false,ex.Message.ToString()));            }        }        ///         /// 获取用户ID        ///         /// 
private int GetUserID() { string s = context.Request["uid"]; return StringHelper.GetInt(s); } /// /// 添加方法 /// private void Add() { UserInfo user=new UserInfo(); int n= RequestHelper.FormToModel
(user,context.Request.Form); ReqMsg msg = new ReqMsg(); msg.Success=n>2?bll.Add(user)>0:false; context.Response.Write(msg.ToString()); } ///
/// 更新 /// private void Update() { UserInfo user = new UserInfo(); int n = RequestHelper.FormToModel
(user, context.Request.Form); ReqMsg msg = new ReqMsg(); msg.Success = n > 2 ? bll.Update(user) : false; context.Response.Write(msg.ToString()); } ///
/// 删除 /// private void Del() { int i = GetUserID(); bll.Del(i); ReqMsg msg = new ReqMsg(true, "ok"); context.Response.Write(msg.ToString()); } ///
/// 查询 /// private void Search() { int index = StringHelper.GetInt(context.Request["page"], 1); int page = StringHelper.GetInt(context.Request["rows"], 10); string s = bll.GetSearchPage(index,page,context.Request.Form); int t = bll.GetSearchCount(context.Request.Form); context.Response.Write(RequestHelper.ResponseGridJSON(s,t)); } public bool IsReusable { get { return false; } } }}
View Code

 

 

三、EasyUI前台展示

    前台方法主要是AJAX处理增删查改请求,创建工具菜单(可能工具权限显示部分但此次不考虑),

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApp.Default" %>        
用户名
卡号
年龄
密码
确定
取消
用户名
年龄
查询
View Code

 

最终显示效果如图:

JS帮助函数:

function ChangeShortDateFormat(cellval) {    if (!cellval) return '';    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();    var hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();    var minu = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();    var sec = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();    return date.getFullYear() + "-" + month + "-" + currentDate; //+ " " + hour + ":" + minu + ":" + sec;}//表单序列化有转JSON格式function convertArray(o) {    var v = {};    for (var i in o) {        if (o[i].name != '__VIEWSTATE') {            if (typeof (v[o[i].name]) == 'undefined')                v[o[i].name] = o[i].value;            else                v[o[i].name] += "," + o[i].value;        }    }    return v;}
View Code

 

********谢谢支持,感谢批评建议,努力学习中******************************

Demo 的 

 

转载于:https://www.cnblogs.com/cugwx/p/3575280.html

你可能感兴趣的文章
使用maven多模块来构建系统时,spring初始化报错的问题
查看>>
oracle内存粒度
查看>>
面向对象三大特性-继承
查看>>
C# 程序运行进度显示Lable
查看>>
495. 提莫攻击 Teemo Attacking
查看>>
374. 猜数字 Guess Number Higher or Lower
查看>>
微信公众平台开发教程第5篇-----网页授权获取用户基本信息
查看>>
mysql 与 sqlserver 的不同
查看>>
Codeforces 784B Santa Claus and Keyboard Check
查看>>
MySQL 表的一些操作
查看>>
git命令行(1)
查看>>
8 -- 深入使用Spring -- 4...6 AOP代理:基于注解的XML配置文件的管理方式
查看>>
Ubuntu 16.04服务器 配置
查看>>
随机生成手机号
查看>>
素数与欧拉函数
查看>>
(图)关于边信息的存储
查看>>
flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台(总结感悟篇)...
查看>>
知识点列表
查看>>
JavaSE 基础语法—三元运算符
查看>>
快速导入Excel数据到mysql
查看>>