循环访问表,查找选中的复选框,添加到数据库
本文关键字:复选框 添加 数据库 访问表 查找 循环 | 更新日期: 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
知道您正在发布列表,并将绑定此列表的属性。也就是说,如果选中复选框,您将获得 Controller
中 IsSelected
属性的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
});