循环访问表,查找选中的复选框,添加到数据库

本文关键字:复选框 添加 数据库 访问表 查找 循环 | 更新日期: 2023-09-27 18:36:54

我一直在寻找一篇文章或例子,但似乎找不到我要找的东西。如果我在视图中写出一个表,其中一列中有一个复选框,我将如何循环浏览该行,查看复选框是否被选中,如果它被选中,然后将记录添加到数据库中?

我仍在学习 MVC 中的复选框和下拉列表,所以我最终必须弄清楚如何将 UserID 分配给行或复选框,然后我将查看 GroupId 的下拉列表以将它们分配给它们。

基本方案是有一个未分配的用户列表,并在表上方有一个组下拉列表。然后,管理员将从 DDL 中选择哪个组,然后检查他要分配给该组的用户。然后,我需要遍历获取已检查记录的 UserId,并使用 EntityFramework 将它们添加到数据库中。

有人知道类似的东西的任何示例或文章吗?

<table class="table table-bordered table-striped table-hover table-condensed tbackground">
        <tr>
            <th class="text-center">
            </th>
            <th class="text-center">
                First Name
            </th>
            <th class="text-center">
                Last Name
            </th>
            <th class="text-center">
                Email
            </th>
            <th class="text-center">
                Phone
            </th>
        </tr>
        @foreach (var item in Model)
        {
            if (item.GroupId == 0)
            {
                <tr>
                    <td>
                        @Html.CheckBox("isSelected")
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.FirstName)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.LastName)
                    </td>
                    <td>
                        <a href="mailto:@item.EmailPrimary">@item.EmailPrimary</a>
                    </td>
                    <td class="text-center">
                        @Html.DisplayFor(modelItem => item.PhonePrimary)
                    </td>
                </tr>
            }
        }
    </table>

循环访问表,查找选中的复选框,添加到数据库

您可以通过以下几种方式执行此操作:

如果您想检查所有内容并发布包含表格的表格

IsSelected属性添加到模型中,并将foreach更改为for循环。这样,您的表for将如下所示:

    @for (var i = 0; i < Model.Count(); i++)
    {
        if (item.GroupId == 0)
        {
            <tr>
                <td>
                    @Html.CheckBoxFor(x => x[i].IsSelected)
                </td>
                <td>
                    @Html.DisplayFor(x => x[i].FirstName)
                </td>
                <td>
                    @Html.DisplayFor(x => x[i].LastName)
                </td>
                <td>
                    <a href="mailto:@Model[i].EmailPrimary">@Model[i].EmailPrimary</a>
                </td>
                <td class="text-center">
                    @Html.DisplayFor(x => x[i].PhonePrimary)
                </td>
            </tr>
        }
    }

使用 index 可以让ModelBinder知道您正在发布列表,并将绑定此列表的属性。也就是说,如果选中复选框,您将获得 ControllerIsSelected 属性的true值。然后,您可以在Controller中执行此操作以获取所选记录:

var selecteds = MyPostedModel.Where(x => x.IsSelected);

或。。。

如果要检查并保存,则

首先将 data-* 属性添加到复选框中,该复选框将保存您的 Id:

 @Html.CheckBox("isSelected", false, new { data_group_id = item.GroupId})

然后将事件列表器添加到您的复选框中,单击jquery:

$("input[name='isSelected']").on('click', function() {
    var groupId = $(this).data("group-id");
    var isChecked = $(this).is(":checked");
    $ajax.... //Use an ajax call and pass the values to your action
});