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() + ",";
我收到错误消息“索引超出范围。必须为非负数,并且小于集合的大小。参数名称:index“。如何解决此问题?
我想做的是从多个复选框列表中的复选框中收集数据,并组合在一起并将其存储到数据库中。
任何建议或帮助都会很棒。谢谢
更新:这是我的复选框列表之一。错误指向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对象以使用相同的索引器。
希望这会有所帮助。
只需更改您的for循环,如下所示:
for (int i = 0; i < CheckBoxList3.Items.Count; i++)
if (CheckBoxList3.Items[i].Selected)
str1 += CheckBoxList3.Items[i].Text.ToString() + ",";
for (int i = 0; i < CheckBoxList4.Items.Count; i++)
if (CheckBoxList4.Items[i].Selected)
str1 += CheckBoxList4.Items[i].Text.ToString() + ",";
for (int i = 0; i < CheckBoxList5.Items.Count; i++)
if (CheckBoxList5.Items[i].Selected)
str1 += CheckBoxList5.Items[i].Text.ToString() + ",";