c# - 需要帮助将多个复选框列表中的数据插入数据库
问题描述
for (int i = 0; i < CheckBoxList3.Items.Count + 1; i++)
{
if (CheckBoxList3.Items[i].Selected || CheckBoxList4.Items[i].Selected || CheckBoxList5.Items[i].Selected)
{
str1 += CheckBoxList3.Items[i].Text.ToString() + "," + CheckBoxList4.Items[i].Text.ToString() +"," + CheckBoxList5.Items[i].Text.ToString() + ",";
我收到错误调用“索引超出范围。必须为非负数且小于集合的大小。参数名称:索引”。如何解决这个问题?
我想要做的是从多个复选框列表中的复选框中收集数据并将其组合在一起并将其存储到数据库中。
任何建议或帮助都会很棒。谢谢
更新:这是我的复选框列表之一。错误指向我的 for 循环的第二行。
<asp:CheckBoxList ID="CheckBoxList3" runat="server" RepeatDirection="Horizontal" Width="900px">
<asp:ListItem>Chicken</asp:ListItem>
<asp:ListItem>Tomato</asp:ListItem>
<asp:ListItem>Garlic</asp:ListItem>
</asp:CheckBoxList>
解决方案
错误的第 1 行:
for (int i = 0; i < CheckBoxList3.Items.Count + 1; i++
错误的第 2 行:
CheckBoxList3.Items[i].Selected || CheckBoxList4.Items[i].Selected || CheckBoxList5.Items[i].Selected
错误的第 3 行:
str1 += CheckBoxList3.Items[i].Text.ToString() + "," + CheckBoxList4.Items[i].Text.ToString() +"," + CheckBoxList5.Items[i].Text.ToString() + ",";
您需要将 for 循环条件从更改CheckBoxList3.Items.Count + 1
为CheckBoxList3.Items.Count
此外,您只检查条件CheckBoxList3.Items.Count
,但您正在使用CheckBoxList4.Items.Count
和CheckBoxList5.Items.Count
似乎CheckBoxList4
并CheckBoxList5
没有足够的项目,如 CheckBoxList3。
请检查所有单独的 CheckboxList 对象以使用相同的索引器。
希望这可以帮助。
//编辑
最佳实践:
string result = CombineCheckboxLists(checkBoxList1, checkBoxList2, checkboxlist3);
private string CombineCheckboxLists(params CheckBoxList[] list)
{
StringBuilder builder = new StringBuilder();
string result = string.Empty;
if (list?.Length > 0)
{
int minItemsCount = list.Min(l => l.Items.Count);
if (minItemsCount > 0)
{
for (int i = 0; i < minItemsCount; i++)
{
builder.Append(string.Join(",", list
.Where(l => l.Items[i].Selected)
.Select(l=> l.Items[i].Text)));
//if you want to merge all iteration via ",", please use following lines instead of above -- [marked as **]
// ** //builder.Append($"{string.Join(",", list.Select(l => l.Items[i].Value))},");
}
}
}
result = builder.ToString();
// ** // result = result.TrimEnd(',');
return result;
}
推荐阅读
- node.js - 如何使用nodejs在mongodb中批量更新或Upsert?
- html - 在非流体容器之后引导流体容器
- dialogflow-es - Dialogflow - 如果短语存在则匹配意图
- python - Ansible django_manage 在 ubuntu 服务器 18.04 上抛出 UnicodeDecodeError 但手动运行该命令可以正常工作
- python-3.x - 如何检查一个字符串是否包含python中的一系列字母?
- java - 通过弹簧数据使用弹性搜索 2.4 的弹簧靴 2
- kubernetes - 代理失败时,Kubernetes 上裸机上的 Kafka Streams 应用程序未处理某些事件
- jenkins - Jenkins:从 groovy 脚本中获取构建参数
- c# - 如何使用 AutoMapper 映射我的复杂类型?
- python - 列表中存储在目录中的子集文件