zoukankan      html  css  js  c++  java
  • MVC3学习:利用mvc3+ajax实现全选和批量删除

    本例数据库操作使用EF code first;

    先利用mvc自带的模板,先生成一个list视图,然后再手动添加复选框和删除按钮

    <table>
        <tr>
            @*在标题行添加一个全选按钮*@
            <th>@Html.CheckBox("checkall")
            </th>
            <th>
                用户名
            </th>
            <th>
                密码
            </th>
            <th>
            </th>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                 @*此处添加复选框,并将ID号绑定到name属性上*@
                <td>@Html.CheckBox(item.Uid.ToString())
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.UserName)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.PassWord)
                </td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id = item.Uid }) |
                    @Html.ActionLink("Details", "Details", new { id = item.Uid }) 
                </td>
            </tr>
        }
    </table>
    @*添加一个删除按钮*@
    <input type="submit" id="delall" value="删除所选" />

    我取消掉了每一行上面的删除按钮,如果需要ajax实现单行删除的同学,请稳步 MVC3学习:利用mvc3+ajax实现删除记录

    然后在此页面上编写JUery AJAX实现批量删除。

    <script type="text/javascript">
        $(function () {
            //全选
            $("#checkall").click(function () {
                $("[type='checkbox']").attr("checked", $(this).attr("checked"));
            });
    
            $("#delall").click(function () {
                //确定至少选择一项
                if ($("[type='checkbox']:checked").length == 0)
                    alert("请至少选择一项");
                //批量删除
                else if (confirm("真的要删除所有选择的记录吗???")) {
                    $("[type='checkbox']:checked").each(function () {
                        var id = $(this).attr("name");
                        var tr = $(this).parent().parent();
                        $.post("delete", { id: id },
                        function (data) {
                            if (data == "-1") { alert("删除错误"); return false; }
                            else $(tr).remove();
                        });
                    });
                }
            });
        });
    </script>

    每一行记录的ID号绑定在了复选框的name属性上,取出来后作为参数传递给控制器的delete方法进行处理。虽然每次只能删除一行记录,但通过JQuery的each方法可以实现循环删除。

    然后编写控制器的delete方法

     public ActionResult delete(int id)
            {
                try
                {
                    if (Request.IsAjaxRequest())
                    {
    
                        Users u = db.Users.Find(id);
                        db.Users.Remove(u);
                        int n = db.SaveChanges();
                        return Content(n.ToString());
                    }
                    return Content("-1");
                }
                catch
                {
                    return View();
                }
            }

    此处利用EF code first的Find()、Remove()、SaveChange()等方法来实现一行记录的删除。利用Request.IsAjaxRequest()来判断是否进行ajax数据传递。

    需要注意的是,delete方法的参数名,一定要和ajax传递的参数名一致。

  • 相关阅读:
    数组是个好东西
    排列(permutation) 用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要 求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。
    子序列的和
    韩信点兵
    水仙花数
    阶乘之和
    3n+1问题
    MongoDB 安装
    mysql中bigint在php中表示
    Android之NDK开发
  • 原文地址:https://www.cnblogs.com/denny402/p/3162573.html
Copyright © 2011-2022 走看看