需要帮助将多个复选框列表中的数据插入数据库中

问题描述 投票:0回答:2
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>
c# asp.net checkboxlist
2个回答
1
投票

错误的第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.CountCheckBoxList5.Items.Count

似乎CheckBoxList4CheckBoxList5没有足够的项目,如CheckBoxList3。

请检查您的所有单个CheckboxList对象以使用相同的索引器。

希望这会有所帮助。


0
投票

只需更改您的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() + ",";
© www.soinside.com 2019 - 2024. All rights reserved.