zoukankan      html  css  js  c++  java
  • MVC结合Ajax实现简单的批量删除

    给一个checkbox复选框以及普通的button按钮。一个负责全选,一个负责触发ajax事件

    <input type="checkbox" id="one"><button id="remove">全选删除</button>

    视图部分代码:

    <table class="table table-striped table-dark">
        <thead class="thead-light">
            <tr>
                <td>选择/全选 @*<input type="checkbox" id="checkall" name="checkall" />*@</td>
                <td>编号</td>
                <td>姓名</td>
                <td>部门</td>
                <td>性别</td>
                <td>账号</td>
                <td>密码</td>
                <td>照片</td>
                <td>备注</td>
                <td>该用户拥有的角色</td>
                <td>设置角色</td>
                <td>修改</td>
                <td>删除</td>
            </tr>
        </thead>
        @foreach (var item in Model)
        {
            <tbody id="tb">
                <tr>
                    <td>
                        <input type="checkbox" name="checkbox" value="@item.ID" id="@item.ID"/>
                        @*<input type="hidden" id="tempString" name="tempString" />*@
                    </td>
                    <td>@item.ID</td>
                    <td>@item.Name</td>
                    <td>@item.Departments.Name</td>
                    <td>@(item.Sex == false ? "" : "")</td>
                    <td>@item.Account</td>
                    <td>@item.Pwd</td>
                    <td>
                        <img src="~/images/users/@item.Photo" style="50px;height:50px" />
                    </td>
                    <td>@item.Remark</td>
                    <td>
                        @foreach (var items in item.R_User_Roles)
                        {
                            @items.Roles.Name;
                            @*<a href="/UserInfo/DeleteRole?id=@items.ID&&rid=@items.RoleID" data-toggle="modal" data-target="#deleteConfirmationModal">Delete</a>*@
                            <a href="/UserInfo/DeleteRole?id=@items.ID&&rid=@items.RoleID" onclick="return confirm('确定是否删除 @item.Name 的 @items.Roles.Name 角色记录?');"><span class="glyphicon glyphicon-remove"></span></a>
                            <br />
                        }
                    </td>
                    <td>
                        @Html.ActionLink("设置角色", "SetRole", "UserInfo", new { id = @item.ID }, new { @class = "btn btn-succues" })
                    </td>
                    <td>
                        @Html.ActionLink("修改", "SetEidt", "UserInfo", new { id = @item.ID }, new { @class = "btn btn-succues" })
                    </td>
                    <td>
                        @Html.ActionLink("删除", "RemoveRole", "UserInfo", new { id = @item.ID, Did = @item.DepartmentID }, new { @class = "btn btn-succues", onclick = "return confirm('确定是否删除此笔记录?')" })
                    </td>
                </tr>
            </tbody>
        }
    </table>

    js部分代码:

    步骤1:给checkbox设置全选

    解析:通过ID选择器,触发点击事件。通过伪类选择器拿到所有checkbox,其中gt(0)

    解释一下juqery.gt:官方的说法是:gt选择器选取 index 值高于指定数的元素。

    也就是说,这里checkbox是获得所有从索引从0开始往后的所有checkbox(除开设置全选的复选框外)

    步骤2:通过prop()方法设置或返回被选元素的属性和值,存在两个参数,参数1:checkbox属性checkbox,参数2:选中值为checked

    因为,对于checkbox来说,checked=checked就是选中状态。

    $("#one").click(function () {
            $(":input:checkbox:gt(0)").prop("checked", $(this).prop("checked"))
        });

    如果想要通过attr方法设置全选可以看看这篇文章:https://www.cnblogs.com/season-huang/p/3360869.html

    步骤3:触发remove点击事件

    步骤4:创建一个空数组,存储用户选中的所有ID

    步骤5:拿到选中的所有checkbox,定义一个id存储起来,存放到刚刚设置的数组里面

    var ids = new Array();//创建一个数组
            $("input:checkbox:gt(0):checked").each(function () {
                var id = $(this).val();
                ids += id + ',';
            });

    步骤6:通过confirm,判断用户是否选择删除,如果确定返回true执行ajax操作,反之返回false

    步骤7:通过ajax异步访问后台控制器,把存储id数组传到controller层。这里接收的数据类型为json,如果返回的状态码为10000则表示删除成功,反之删除失败

    var msg = "确定要删除吗?"
            if (confirm(msg) == true) {
                //异步访问批量删除方法, 把数组传入controller层
                $.ajax({
                    type: "post",
                    url: "delete",
                    data: { ids: ids },
                    success: function (data) {
                        if (data.state == 10000) {
                            alert("删除成功!");
                            location.reload();
                        }
                        else {
                            alert("删除失败!");
                        }
                    }
                });
            }

    控制器代码:

    步骤8:写一个返回类型为JsonResult的方法,接收ajax传递的参数,记住,客户端传递的数据类型是什么,服务器定义的参数就要是什么。

    步骤9:截取最后一个字符

    步骤10:接收截取后的ID数组,split:将字符串分割成字符串数组

    步骤11:int.parse将string转为int接收,通过id进行删除就看了!!!

    public JsonResult delete(string ids)
            {
                ids = ids.Substring(0, ids.Length - 1); //删除字符串最后一个字符
                string[] datalist = ids.Split(',');
                foreach (var item in datalist)
                {
                    int daa = int.Parse(item);
                    var da = db.UserInfos.FirstOrDefault(u=>u.ID==daa);
                    db.UserInfos.Remove(da);
                }
                db.SaveChanges();
                return Json(new { state = "10000" });
    
            }

    每天进步一点点,有不足的地方希望大佬指正,互相学习哈哈哈。。。

  • 相关阅读:
    PHP获取指定的时间戳
    Elasticsearch
    git有用基本指令
    php中的json_decode
    有用的sql积累
    git submodule使用原理
    mysql重复插入时insert更改为update更新操作
    jpm
    awk 语句
    tomcat 发布简单的html网站
  • 原文地址:https://www.cnblogs.com/hcyesdo/p/12766172.html
Copyright © 2011-2022 走看看