首页 新闻 赞助 找找看

MVC中我要删除checkbox选中的记录,可是没选择的也被删除了

0
悬赏园豆:10 [已解决问题] 解决于 2013-04-18 17:30

View代码:

@model IEnumerable<Mvc_EF.Models.Customer>
@{
    ViewBag.Title = "我的MVC";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
    客户中心</h2>
<p>
    @Html.ActionLink("添加", "Create")
    <input type="submit" value="删除" id="plsc" name="plscjl" />
</p>
<table style="text-align: center">
    <tr>
        <th align="center">
            操作:
        </th>
        <th>
            编号:
        </th>
        <th>
            用户名:
        </th>
        <th>
            联系方式:
        </th>
        <th>
            备注:
        </th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                <input type="checkbox" fxkid="@item.CustomerID" name="fxsc" class="select" />
                @Html.ActionLink("更新", "Edit", new { id = item.CustomerID }) | @*@Html.ActionLink("详情", "Details", new { id = item.CustomerID }) |*@
                <a name="Delete" stuid="@item.CustomerID">删除</a>
            </td>
            <td>
                @item.CustomerID
            </td>
            <td>
                @item.CustomerName
            </td>
            <td>
                @item.Telephone
            </td>
            <td>
                @item.Remark
            </td>
        </tr>
    }
</table><script type="text/javascript" language="javascript">    

$(function () {              

var arry = new Array();        

var trarry = new Array();        

$("#plsc").click(

        function () {

            var i = 0;

            var t = 0;

            $("input.select").each(function () {

                if ($("[name='fxsc']:checked")) {

                    var id = $(this).attr("fxkid");

                    var tr = $(this).parent().parent();

                    trarry[t] = tr;

                    tr++;

                    arry[i] = id;

                    i++;                 }             })

            if (arry.length > 0 && trarry.length > 0) {

                if (!confirm("确定要删除这些用户吗?")) return false;

                for (var i = 0; i < arry.length; i++) {

                    var url = "Customer/Delete/" + arry[i];

                    $.post(url, function (data) {

                        if (data != "-1") {

                            for (var t = 0; t < trarry.length; t++) {

                                $(trarry[t]).remove();

                            }

                            alert("删除成功");

                        }  

                       else {

                            alert("删除失败");                         }                     });                 }             }         });     }); </script>

 

控制器代码:

 [HttpPost, ActionName("plscjl")]

        public ActionResult Delete(List<int> id)

        {

            try

            {

                // TODO: Add delete logic here

                if (Request.IsAjaxRequest())

                {

                    foreach (var i in id)

                    {

                        if (i > 0)  

                       {  

                           var customersc = dbContext.Customers.SingleOrDefault(s => s.CustomerID.Equals(i));

                            dbContext.Customers.DeleteObject(customersc);

                            int result = dbContext.SaveChanges();

                            return Content(result.ToString());

                        }

                    }

                    return null;

                }

                else

                {

                    return Content("-1");

                }

            }

            catch

            {

                return Content("-1");

            }

        }

        }

有点乱辛苦大家看看

肥肚皮的主页 肥肚皮 | 初学一级 | 园豆:167
提问于:2013-04-18 15:25
< >
分享
最佳答案
0
$("input.select:checked").each(function () { 

   //todo

})    
收获园豆:5
Yu | 专家六级 |园豆:12980 | 2013-04-18 16:45

可以了谢谢,为什么要循环checked,能说下吗

肥肚皮 | 园豆:167 (初学一级) | 2013-04-18 17:14

@肥肚皮: 只循环选中的checkbox

Yu | 园豆:12980 (专家六级) | 2013-04-18 17:17

@Yu: 那为什么我在下面进行判断不能得到想要的效果

肥肚皮 | 园豆:167 (初学一级) | 2013-04-18 17:20

@肥肚皮: 这个 if ($("[name='fxsc']:checked"))  有问题,不是你想的循环对象

Yu | 园豆:12980 (专家六级) | 2013-04-18 17:34
其他回答(3)
0

 if ($("[name='fxsc']:checked")) 这句话有问题,换 if ($("[name='fxsc']:checked").attr("checked") == true)试试

收获园豆:2
jingjunfeng | 园豆:873 (小虾三级) | 2013-04-18 16:17

还是不行啊

支持(0) 反对(0) 肥肚皮 | 园豆:167 (初学一级) | 2013-04-18 16:22

@肥肚皮:   var id = $(this).attr("fxkid");

                    var tr = $(this).parent().parent();

                    trarry[t] = tr;

                    tr++;

                    arry[i] = id;

 

这段代码执行时,添加 if($(this).attr("checked") == true) 判断,之前我搞错了..

 

 

}

支持(0) 反对(0) jingjunfeng | 园豆:873 (小虾三级) | 2013-04-18 17:08

@jingjunfeng: 是因为之前没有遍历出选中的checkbox吗?所以后面要在遍历一次

支持(0) 反对(0) 肥肚皮 | 园豆:167 (初学一级) | 2013-04-18 17:19
0

楼上说的对, :checked 就是获取选中的

$("[name='fxsc']:checked") //这个就是 获取选中的 一个集合,数组。里面不用再判断了,直接取值就行。

收获园豆:3
Qlin | 园豆:2403 (老鸟四级) | 2013-04-18 17:26

我懂了谢谢

支持(0) 反对(0) 肥肚皮 | 园豆:167 (初学一级) | 2013-04-18 17:29
0

你可以给每个数据加上一个ID,根据ID删除

淘@淘 | 园豆:602 (小虾三级) | 2013-04-18 17:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册