zoukankan      html  css  js  c++  java
  • EasyUI表格删除多个表的多条数据

    1.页面代码:通过datagrid的勾选框选中多条数据,用逗号拼接ID,  并以post方式传给后台控制器

     //删除用户(可批量)
            function DelUser() {
                var rows = $("#ui_user_dg").datagrid("getChecked");
                if (rows.length < 1) {
                    $.show_alert("提示", "请先勾选要删除的用户");
                    return;
                }
                $.messager.confirm('提示', '确定删除选中行吗?', function (r) {
                    if (r) {
                        var parmIds = "";
                        $.each(rows, function (i, row) {
                            parmIds += row.ID + ",";
                        });
                        parmIds = parmIds.substring(0, parmIds.length - 1);
                        $.ajax({
                            url: "/User/DelUserByIDs",
                            data: {
                                IDs: parmIds
                            },
                            type: "POST",
                            dataType: "json",
                            success: function (data) {
                                if (data.success) {
                                    $.show_alert("提示", data.msg);
                                    $("#ui_user_dg").datagrid("reload").datagrid('clearSelections').datagrid('clearChecked');
                                } else {
                                    $.show_alert("提示", data.msg);
                                }
                            }
                        });
                    }
                });
            }

    2.控制器接收页面传来的数据Ids,通过调用删除的BLL方法,

    new UserBLL().DeleteUser(Ids)
      public ActionResult DelUserByIDs()
            {
                try
                {
                    string Ids = Request["IDs"] == null ? "" : Request["IDs"];
                    if (!string.IsNullOrEmpty(Ids))
                    {
                        if (new UserBLL().DeleteUser(Ids))
                        {
                            return Content("{"msg":"删除成功!","success":true}");
                        }
                        else
                        {
                            return Content("{"msg":"删除失败!","success":false}");
                        }
                    }
                    else
                    {
                        return Content("{"msg":"删除失败!","success":false}");
                    }
                }
                catch (Exception ex)
                {
                    return Content("{"msg":"删除失败," + ex.Message + "","success":false}");
                }
            }

    3.BLL方法(起到在控制器与DAL之间传递参数的作用)

     /// <summary>
            /// 删除用户(可批量删除,删除用户同时删除对应的权限和所处的部门)
            /// </summary>
            public bool DeleteUser(string idList)
            {
                return dal.DeleteUser(idList);
            }

    4.DAL方法()

    List<string> list = new List<string>();
                list.Add("delete from tbUser where ID in (" + idList + ")");
                list.Add("delete from tbUserRole where UserId in (" + idList + ")");
    通过泛型对象执行两条sql语句实现删除多个表的作用,in关键字是为了删除多个Ids的数据
    /// <summary>
            /// 删除用户(可批量删除,删除用户同时删除对应的权限和所处的部门)
            /// </summary>
            /// idList是以逗号拼接起来的一个字符串
            public bool DeleteUser(string idList)
            {
                List<string> list = new List<string>();
                list.Add("delete from tbUser where ID in (" + idList + ")");
                list.Add("delete from tbUserRole where UserId in (" + idList + ")");
    
                try
                {
                    int count = SqlHelper.ExecuteNonQuery(SqlHelper.connStr, list);
                    if (count > 0)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                catch
                {
                    return false;
                }
            }

    5.SqlHelper帮助类

     /// <summary>
            /// 执行多条sql语句(List泛型集合)【事务】(无参数)
            /// </summary>
            /// <param name="connectionString">数据库连接字符串</param>
            /// <param name="listSql">包含多条sql语句的泛型集合</param>
            /// <returns>受影响行数</returns>
            public static int ExecuteNonQuery(string connectionString, List<string> listSql)
            {
                SqlCommand cmd = new SqlCommand();
                SqlConnection conn = new SqlConnection(connectionString);
                conn.Open();
                SqlTransaction trans = conn.BeginTransaction();
                PrepareCommand(cmd, conn, trans, CommandType.Text, null, null);
                try
                {
                    int count = 0;
                    for (int n = 0; n < listSql.Count; n++)
                    {
                        string strSql = listSql[n];
                        if (strSql.Trim().Length > 1)
                        {
                            cmd.CommandText = strSql;
                            count += cmd.ExecuteNonQuery();
                        }
                    }
                    trans.Commit();
                    cmd.Parameters.Clear();
                    return count;
                }
                catch
                {
                    trans.Rollback();
                    cmd.Parameters.Clear();
                    return 0;
                }
                finally
                {
                    conn.Close();
                }
            }

    /// <summary>
    /// 准备一个待执行的SqlCommand
    /// </summary>
    private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType commandType, string commandText, params SqlParameter[] paras)
    {
    try
    {
    if (conn.State != ConnectionState.Open)
    {
    conn.Close();
    conn.Open();
    }
    cmd.Connection = conn;
    if (commandText != null)
    cmd.CommandText = commandText;
    cmd.CommandType = commandType; //这里设置执行的是T-Sql语句还是存储过程

    
    

    if (trans != null)
    cmd.Transaction = trans;

    
    

    if (paras != null && paras.Length > 0)
    {
    //cmd.Parameters.AddRange(paras);
    for (int i = 0; i < paras.Length; i++)
    {
    if (paras[i].Value == null || paras[i].Value.ToString() == "")
    paras[i].Value = DBNull.Value; //插入或修改时,如果有参数是空字符串,那么以NULL的形式插入数据库
    cmd.Parameters.Add(paras[i]);
    }
    }
    }
    catch (Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }

     

    想要项目源码的小伙伴可以加我qq:3539447520@qq.com,请先备注交好友原因,否则不通过哦

  • 相关阅读:
    Leetcode Word Pattern
    Leetcode Strobogrammatic Number
    Leetcode Meeting Rooms
    Leetcode Pascal's Triangle II
    Leetcode Pascal's Triangle
    Leetcode Majority Element II
    Leetcode Majority Element
    牛客多校第六场 B Shorten IPv6 Address 模拟
    牛客多校第六场 A Garbage 模拟/签到
    排列数,康托展开及其线段树优化
  • 原文地址:https://www.cnblogs.com/fzqm-lwz/p/11308801.html
Copyright © 2011-2022 走看看