C#easyui实现增删改查
来源:互联网 发布:飞翔的小鸟游戏源码 编辑:程序博客网 时间:2024/05/16 01:40
上文,我们使用pb,c#WinForm,c#WebForm分别实现了增删改查,本文,我们C#easyui来实现一下。首先,说明一点,WebForm和easyui基本是一样,代码基本雷同,就是一个使用了服务器控件,一个使用easyui,排版有点不一样,服务器端的代码没有什么变化。数据库仍然采用sqlserver,表仍然采用table_test,字段不说了,参考前文。
首先,在vs中创建一个ASP.NET空网站,wsjquery
其次,和上文一样,创建数据库操作类db.cs
这次,该文件增加了操作存储过程的两个函数,因为easyui需要分页显示,本文通过存储过程实现sqlserver的分页。
using System;using System.Data;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data.SqlClient;/// <summary>///db 的摘要说明/// </summary>public class db{ public static string connectionstring = "server=localhost;database=db;uid=sa;pwd=password"; public db() {////TODO: 在此处添加构造函数逻辑// } public static SqlConnection OpenDB() { try { SqlConnection oConn = new SqlConnection(connectionstring); oConn.Open(); return oConn; } catch { throw; } } public static void CloseDB(SqlConnection oConn) { try { oConn.Close(); } catch { throw; } } public static DataSet Execute(string strCommandString) { try { SqlConnection oConn = OpenDB(); DataSet oDataSet = new DataSet(); SqlDataAdapter oDataAdapter = new SqlDataAdapter(strCommandString, oConn); oDataAdapter.Fill(oDataSet); CloseDB(oConn); return oDataSet; } catch { throw; } } public static int ExecuteNonQuery(string strCommandString) { int li_count = 0; SqlConnection oConn = null; SqlCommand oComm = null; try { oConn = new SqlConnection(connectionstring); oComm = new SqlCommand(); oConn.Open(); oComm.Connection = oConn; oComm.CommandText = strCommandString; li_count = oComm.ExecuteNonQuery(); return li_count; } catch { return 0; } finally { if (oConn != null) oConn.Close(); } } public static int ExecuteReid(string strCommandString) { int li_count = 0; SqlConnection oConn = null; SqlCommand oComm = null; try { oConn = new SqlConnection(connectionstring); oComm = new SqlCommand(); oConn.Open(); oComm.Connection = oConn; oComm.CommandText = strCommandString; li_count = Convert.ToInt32(oComm.ExecuteScalar().ToString()); return li_count; } catch { return 0; } finally { if (oConn != null) oConn.Close(); } } /// <summary> /// 执行存储过程 /// </summary> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <param name="tableName">DataSet结果中的表名</param> /// <returns>DataSet</returns> public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName) { using (SqlConnection connection = new SqlConnection(connectionstring)) { DataSet dataSet = new DataSet(); connection.Open(); new SqlDataAdapter { SelectCommand = BuildQueryCommand(connection, storedProcName, parameters) }.Fill(dataSet, tableName); connection.Close(); return dataSet; } } /// <summary> /// 构建 SqlCommand 对象,返回结果集 /// </summary> /// <param name="connection">数据库连接</param> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <returns>SqlCommand</returns> private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters) { SqlCommand command = new SqlCommand(storedProcName, connection) { CommandType = CommandType.StoredProcedure }; foreach (SqlParameter parameter in parameters) { if (parameter != null) { if (((parameter.Direction == ParameterDirection.InputOutput) || (parameter.Direction == ParameterDirection.Input)) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } command.Parameters.Add(parameter); } } return command; }}
第三步:引入easyui的文件,排版default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE><html xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> <link href="css/demo.css" type="text/css" rel="stylesheet"> <link rel="stylesheet" type="text/css" href="css/demo.css"> <link rel="stylesheet" type="text/css" href="jquery/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="jquery/themes/icon.css"> <script type="text/javascript" src="jquery/jquery-1.8.0.min.js"></script> <script type="text/javascript" src="jquery/jquery.easyui.min.js"></script> <script type="text/javascript" src="jquery/locale/easyui-lang-zh_CN.js"></script><script type="text/javascript"> $(function () { initgrid(); }); function initgrid() { $('#t_dg').datagrid({ url: location.href, idField: 'dg_dbid', height: 420, striped: true, loadMsg: '数据正在加载,请耐心的等待...', remoteSort: true, singleSelect: true, sortName: 'dg_dbid', sortOrder: 'desc', columns: [[ { field: 'cbx', checkbox: true }, { field: 'dg_xm1', title: '姓名', width: 200, align: 'center', sortable: true }, { field: 'dg_xm2', title: '性别', width: 100, align: 'center', sortable: true }, { field: 'dg_xm3', title: '电话', width: 200, align: 'center' }, { field: 'dg_dbid', title: '操作', width: 100, align: 'center', formatter: function (value, rec) { return '<a style="color:blue" href="javascript:;" onclick="EditData(' + value + ');$(this).parent().click();return false;">修改</a>'; } } ]], queryParams: { "action": "query" }, pagination: true, pageNumber: 1, pageSize: 10, rownumbers: true }); } function initcx() { var cx = $("#txt_cx").val(); $('#t_dg').datagrid('options').queryParams.cx = cx; $('#t_dg').datagrid('reload'); } function OpenWin() { $("#edit").dialog("open"); $("#edit-buttons a:first").attr("onclick", "Add(0); return false;"); $("#xm1").val(""); $("#xm3").val(""); } //提交按钮事件 function Add(uid) { if (!$("#form1").form("validate")) { return; } var json = $('#form1').serialize(); $.post(location.href, json, function (data) { $.messager.alert('提示', data, 'info', function () { if (data.indexOf("成功") > 0) { $("#t_dg").datagrid("reload"); $("#edit").dialog("close"); } }); }); } //修改链接 事件 function EditData(uid) { $("#edit").dialog("open"); $("#btn_add").attr("onclick", "Add(" + uid + "); return false;") $.post(location.href, { "action": "queryone", "dbid": uid }, function (data) { var dataObj = eval("(" + data + ")"); //转换为json对象 $("#form1").form('load', dataObj); }); } //删除按钮事件 function DelData(id) { $.messager.confirm('提示', '确认删除?', function (r) { if (r) { var selected = ""; if (id <= 0) { $($('#t_dg').datagrid('getSelections')).each(function () { selected += this.dg_dbid + ","; }); selected = selected.substr(0, selected.length - 1); if (selected == "") { $.messager.alert('提示', '请选择要删除的数据!', 'info'); return; } } else { selected = id; } $.post(location.href, { "action": "del", "cbx_select": selected }, function (data) { $.messager.alert('提示', data, 'info', function () { $("#t_dg").datagrid("reload"); }); }); } }); } window.onload = function () { var searchcol = document.getElementsByName("searchcol"); var data = $('#searchcol').combobox('getData'); if (data.length > 0) { $('#searchcol').combobox('select', data[0].mc); } } </script> </head><body> <div id="lay" class="easyui-layout" fit=true> <div region="center" title="信息主页" iconCls="icon-main" style="padding:5px" > <table id="t_tool" cellspacing="2px" cellpadding="0" border="0" style="width: 100%"> <tr> <td style="height: 3px" colspan="2"></td> </tr> <tr> <td valign="middle" nowrap align="left" class=spannone> 查询条件:<input id="txt_cx" name="txt_cx" type="text" /> <a href="#" onclick="initcx();return false;" id="a_cx" class="easyui-linkbutton" iconcls="icon-search">查询</a> </td> <td valign="middle" nowrap align="right"> <a href="#" onclick="OpenWin();return false;" id="a_add" class="easyui-linkbutton" iconcls="icon-add">增加</a> <a href="#" onclick="DelData(0);return false;" id="a_del" class="easyui-linkbutton" iconcls="icon-cancel">删除</a> </td> </tr> <tr> <td style="height: 3px" colspan="2"></td> </tr> </table> <table id="t_dg"></table> </div> </div> <div id="edit" class="easyui-dialog" title="信息维护" style="width: 400px; height: 200px;" modal="true" closed="true" buttons="#edit-buttons"> <form id="form1" name="form1" method="post"> <input id="action" name="action" value="update" type="hidden" /> <input id="dbid" name="dbid" type="hidden" /> <table id="Table2" cellspacing="2" cellpadding="1" width="95%" border="0" align="center" class="px12"> <tr> <td style="height: 5px" colspan="2"></td> </tr> <TR> <td width="20%" height="20" class="tdlabel"><span class="spanerror">*</span>姓名:</td> <TD width="80%"><input id="xm1" name="xm1" type="text" class="easyui-validatebox" required="true" maxlength="20" /></TD></TR> <TR> <td width="20%" height="20" class="tdlabel">性别:</td> <TD width="80%"> <input type="radio" checked="checked" name="xm2" value="男" />男 <input type="radio" name="xm2" value="女" />女 </TD> </TR><TR> <td width="20%" height="20" class="tdlabel">电话:</td> <TD width="80%"> <input id="xm3" name="xm3" type="text" class="easyui-validatebox" maxlength="100" /></TD></TR> </TABLE> </form> </div> <div id="edit-buttons"> <a id="btn_add" class="easyui-linkbutton">提交</a> <a id="btn_close" class="easyui-linkbutton" onclick="$('#edit').dialog('close');return false;">取消</a> </div> </body></html>
第四步:配置好demo.css
.px12 {font-family: "宋体", Arial;font-size: 12px;text-decoration: none;color: #000000;}.tdlabel{background-color:Silver;text-align:right;}
第五步:编写default.aspx.cs文件
using System;using System.Data;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Data.SqlClient;using System.Text;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string action = ""; if (Request.Form["action"] != "") action = Request.Form["action"]; switch (action) { case "query"://查询数据 QueryData(); break; case "queryone"://查询指定dbid 的数据,修改时用 QueryOneData(); break; case "update"://提交数据,添加或修改 UpdateData(); break; case "del"://删除数据 DelData(); break; default: break; } } /// <summary> /// 查询数据 /// </summary> private void QueryData() { int page = Request.Form["page"] != "" ? Convert.ToInt32(Request.Form["page"]) : 0; int size = Request.Form["rows"] != "" ? Convert.ToInt32(Request.Form["rows"]) : 0; string sort = Request.Form["sort"] != "" ? Request.Form["sort"] : ""; string order = Request.Form["order"] != "" ? Request.Form["order"] : ""; if (page < 1) return; string orderField = sort.Replace("dg_", ""); Boolean lb_orderby = false; if (order.Equals("asc")) lb_orderby = true; string strWhere = GetWhere(); DataSet ds = GetList("table_test", "*", orderField, size, page, false, lb_orderby, strWhere); DataSet ds2 = GetList("table_test", "*", orderField, size, page, true, lb_orderby, strWhere); int count = Convert.ToInt16(ds2.Tables[0].Rows[0][0]);//获取总数 string strJSON = CreateJsonParameters(ds.Tables[0], true, count); Response.Write(strJSON); Response.End(); } #region 查询数据 /// <summary> /// 组合搜索条件 /// </summary> /// <returns></returns> private string GetWhere() { string ls_where = "1=1"; string cx = Request.Form["cx"] != "" ? Request.Form["cx"] : string.Empty; if ( cx != "") { ls_where = " (xm1 like '%" + cx + "%') or (xm2 like '%" + cx + "%') or (xm3 like '%" + cx + "%')"; } return ls_where; } #endregion public static DataSet GetList(string tableName, string getFields, string orderName, int pageSize, int pageIndex, bool isGetCount, bool orderType, string strWhere) { SqlParameter[] parameters = { new SqlParameter("@tblName", SqlDbType.VarChar, 255), new SqlParameter("@strGetFields", SqlDbType.VarChar, 1000), new SqlParameter("@fldName", SqlDbType.VarChar, 255), new SqlParameter("@PageSize", SqlDbType.Int), new SqlParameter("@PageIndex", SqlDbType.Int), new SqlParameter("@doCount", SqlDbType.Bit), new SqlParameter("@OrderType", SqlDbType.Bit), new SqlParameter("@strWhere", SqlDbType.VarChar, 1500) }; parameters[0].Value = tableName; parameters[1].Value = getFields; parameters[2].Value = orderName; parameters[3].Value = pageSize; parameters[4].Value = pageIndex; parameters[5].Value = isGetCount ? 1 : 0; parameters[6].Value = orderType ? 1 : 0; parameters[7].Value = strWhere; return db.RunProcedure("pro_pageList", parameters, "ds"); } private void UpdateData() { int dbid = Request.Form["dbid"] != "" ? Convert.ToInt32(Request.Form["dbid"]) : 0; HttpContext context = HttpContext.Current; string writeMsg = "操作失败!"; int li_ret; if (dbid < 1) { string ls_sql = "INSERT INTO table_test ( xm1,xm2,xm3 ) VALUES ( @@xm1, @@xm2, @@xm3 ); SELECT dbid FROM table_test WHERE (dbid = @@IDENTITY)"; ls_sql = ls_sql.Replace("@@xm1", "'" + Request.Form["xm1"] + "'"); ls_sql = ls_sql.Replace("@@xm2", "'" + Request.Form["xm2"] + "'"); ls_sql = ls_sql.Replace("@@xm3", "'" + Request.Form["xm3"] + "'"); li_ret = db.ExecuteReid(ls_sql); if (li_ret > 0) { writeMsg = "新增成功!"; } else { writeMsg = "新增失败!"; } } else { string ls_sql = "update table_test set xm1=@@xm1,xm2=@@xm2,xm3=@@xm3 where dbid = @@dbid"; ls_sql = ls_sql.Replace("@@dbid", "'" + Request.Form["dbid"] + "'"); ls_sql = ls_sql.Replace("@@xm1", "'" + Request.Form["xm1"] + "'"); ls_sql = ls_sql.Replace("@@xm2", "'" + Request.Form["xm2"] + "'"); ls_sql = ls_sql.Replace("@@xm3", "'" + Request.Form["xm3"] +"'"); li_ret = db.ExecuteNonQuery(ls_sql); if (li_ret > 0) { writeMsg = "修改成功!"; } else { writeMsg = "修改失败!"; } } Response.Clear(); Response.Write(writeMsg); Response.End(); } #region 删除指定dbid 的数据 /// <summary> /// 删除数据 /// </summary> private void DelData() { string writeMsg = "删除失败!"; string selectID = Request.Form["cbx_select"] != "" ? Request.Form["cbx_select"] : ""; if (selectID != string.Empty && selectID != "0") { string ls_sql = "delete table_test where dbid = " + selectID; if (db.ExecuteNonQuery(ls_sql) > 0) { writeMsg = "删除成功!"; } else { writeMsg = "删除失败!"; } } Response.Clear(); Response.Write(writeMsg); Response.End(); } #endregion #region 查询指定ID 的数据 /// <summary> /// 获取指定ID的数据 /// </summary> private void QueryOneData() { int ll_dbid = Request.Form["dbid"] != "" ? Convert.ToInt32(Request.Form["dbid"]) : 0; DataSet ds = db.Execute("select xm1,xm2,xm3,dbid from table_test where dbid =" + ll_dbid); string strJSON = CreateJsonOne(ds.Tables[0], false); Response.Clear(); Response.Write(strJSON); Response.End(); } #endregion public static string CreateJsonOne(DataTable dt, bool displayCount) { StringBuilder JsonString = new StringBuilder(); //Exception Handling if (dt != null && dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { JsonString.Append("{ "); for (int j = 0; j < dt.Columns.Count; j++) { if (j < dt.Columns.Count - 1) { JsonString.Append(dt.Columns[j].ColumnName.ToString().ToLower() + ":" + "\"" + dt.Rows[i][j].ToString() + "\","); } else if (j == dt.Columns.Count - 1) { JsonString.Append(dt.Columns[j].ColumnName.ToString().ToLower() + ":" + "\"" + dt.Rows[i][j].ToString() + "\""); } } if (i == dt.Rows.Count - 1) { JsonString.Append("} "); } else { JsonString.Append("}, "); } } return JsonString.ToString(); } else { return null; } } /// <summary> /// 将DataTable中的数据转换成JSON格式 /// </summary> /// <param name="dt">数据源DataTable</param> /// <param name="displayCount">是否输出数据总条数</param> /// <param name="totalcount">JSON中显示的数据总条数</param> /// <returns></returns> public static string CreateJsonParameters(DataTable dt, bool displayCount, int totalcount) { StringBuilder JsonString = new StringBuilder(); //Exception Handling if (dt != null) { JsonString.Append("{ "); JsonString.Append("\"rows\":[ "); for (int i = 0; i < dt.Rows.Count; i++) { JsonString.Append("{ "); for (int j = 0; j < dt.Columns.Count; j++) { if (j < dt.Columns.Count - 1) { //if (dt.Rows[i][j] == DBNull.Value) continue; if (dt.Columns[j].DataType == typeof(bool)) { JsonString.Append("\"dg_" + dt.Columns[j].ColumnName.ToLower() + "\":" + dt.Rows[i][j].ToString().ToLower() + ","); } else if (dt.Columns[j].DataType == typeof(string)) { JsonString.Append("\"dg_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j].ToString().Replace("\"", "\\\"") + "\","); } else { JsonString.Append("\"dg_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j] + "\","); } } else if (j == dt.Columns.Count - 1) { //if (dt.Rows[i][j] == DBNull.Value) continue; if (dt.Columns[j].DataType == typeof(bool)) { JsonString.Append("\"dg_" + dt.Columns[j].ColumnName.ToLower() + "\":" + dt.Rows[i][j].ToString().ToLower()); } else if (dt.Columns[j].DataType == typeof(string)) { JsonString.Append("\"dg_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j].ToString().Replace("\"", "\\\"") + "\""); } else { JsonString.Append("\"dg_" + dt.Columns[j].ColumnName.ToLower() + "\":" + "\"" + dt.Rows[i][j] + "\""); } } } /*end Of String*/ if (i == dt.Rows.Count - 1) { JsonString.Append("} "); } else { JsonString.Append("}, "); } } JsonString.Append("]"); if (displayCount) { JsonString.Append(","); JsonString.Append("\"total\":"); JsonString.Append(totalcount); } JsonString.Append("}"); return JsonString.ToString().Replace("\n", ""); } else { return null; } }}
第六步:数据库增加存储过程,用于分页
CREATE PROCEDURE [dbo].[pro_pageList](@tblName varchar(255), -- 表名@strGetFields varchar(1000) = '*', -- 需要返回的列@fldName varchar(255)='', -- 排序的字段名@PageSize int = 40, -- 页尺寸@PageIndex int = 1, -- 页码@doCount bit = 0, -- 返回记录总数, 非 0 值则返回@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序@strWhere varchar(1500)='' -- 查询条件 (注意: 不要加 where))ASdeclare @strSQL varchar(5000) -- 主语句declare @strTmp varchar(110) -- 临时变量declare @strOrder varchar(400) -- 排序类型if @doCount != 0 begin if @strWhere !='' set @strSQL = 'select count(*) as Total from ' + @tblName + ' where '+@strWhere else set @strSQL = 'select count(*) as Total from ' + @tblName end --以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况else begin if @OrderType != 0 begin set @strTmp = '<(select min' set @strOrder = ' order by ' + @fldName +' desc' end else --如果@OrderType不是0,就执行降序,这句很重要! begin set @strTmp = '>(select max' set @strOrder = ' order by ' + @fldName +' asc' end if @PageIndex = 1 --如果是第一页就执行下面的代码,这样会加快执行速度 begin if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder else set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder end else --以下代码赋予了@strSQL以真正执行的SQL代码 begin set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @fldName + '' + @strTmp + '('+ @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '+ @fldName + ' from ' + @tblName + '' + @strOrder + ') as tblTmp)'+ @strOrder if @strWhere != '' set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @fldName + '' + @strTmp + '(' + @fldName + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' ' + @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder end end exec (@strSQL)
总结
通过上面的代码,我们可以看出C#easyui实现增删改查,前端采用jquery来获取数据,传递给服务器,服务器端得到数据将处理结果通过josn或者text的方式传到前端 ,jquery接收到处理结果后再展示给客户。也是十分的简单,就是对http协议要有深入的理解,不过,和上文的三种编程模式还是不同的,需要深刻的理解,融汇贯通。
通过esayui来处理增删改查,代码终于突破1000行了,有点怀念pb几十行的幸福时光了吧,后面更加复杂,没有几千行都处理不了一个增删改查,不知道为什么简单的问题越来越复杂。
0 0
- C#easyui实现增删改查
- jQuery EasyUI+Nutz实现增删改查
- Jquery EasyUI增删改查实现步骤
- ASP.NET EasyUI实现增删改查
- ssm+easyui+sqlserver2008(增删改查实现)
- easyui增删改查
- easyui增删改查
- easyui-datagrid 增删改查
- EasyUI 增删改查、分页
- easyUI 增删查改1
- easyUI datagrid增删改查
- EasyUI Datagrid增删改查
- EasyUi+mvc增删改查
- EASYUI的增删改查
- easyui+servlet增删改查
- C#winform实现增删改查
- C#WebForm实现增删改查
- 【C++】单链表的增删查改实现
- 51nod 2级算法题-1279
- 杂谈-01
- 数组遍历删除
- struts2中服务器端数据校验
- GDOI2017模拟 Round 4 4.24-4.26
- C#easyui实现增删改查
- 3ds Max 2014插件安装(插件无效的原因~)
- 决策树
- Android XML解析方式
- Tensorflow学习系列(1)——MNIST手写识别
- struts2中简单的文件上传
- python学习笔记7.5-内建模块struct
- SurfaceFlinger启动过程分析(一)、(二)、(三)、(四)【转】
- 使用原生js实现ajax请求