0

我开发了一个由 asp.net 文本框和一个设置为“Multiple”的 ListBox 控件组成的表单,该控件有四个公司。单击提交按钮时,表单会将输入的数据插入数据库中的两个不同表中,并向各自的公司发送一封电子邮件——一切正常……除非我尝试选择多个公司——我的代码只会提交第一个选择的公司,但会根据 ListBox 中选择的公司数量插入第一个选择的公司数据。例如,如果我选择两个公司,则选择的第一个公司输入两次。4 次,如果我选择所有四家公司——这是我的代码/逻辑。任何人都可以就我做错了什么提供一些帮助吗?我在下面提供了我的代码:

/ * ** * ** * ** * ** * ** * **** * aspx: *

<p><b>Company Affected:</b><br />
<asp:ListBox 
   ID="lstcompanyAffected" 
   runat="server"
   SelectionMode="Multiple">
   <asp:ListItem Text="Select Company" Value="SelectCompany" />
   <asp:ListItem Text="CompanyI" Value="CompanyI" />
   <asp:ListItem Text="CompanyII" Value="CompanyII" />
   <asp:ListItem Text="CompanyIII" Value="CompanyIII" />
   <asp:ListItem Text="CompanyIV" Value="CompanyIV" />
   </asp:ListBox></p>

/ * ** * ** * ** * aspx.cs *

lstcompanyAffected.SelectionMode = ListSelectionMode.Multiple;
        foreach (ListItem item in locationAffected.Items)
        {
            if (item.Selected) { 
                if ((lstcompanyAffected.SelectedValue.ToString() == "CompanyI"))
                {
                    outageId.Text = "1";
                    txtEmailAddresses.Text = "CompanyI@aol.com";
                }
                else if ((lstcompanyAffected.SelectedValue.ToString() == "CompanyII"))
                {
                    outageId.Text = "2";
                    txtEmailAddresses.Text = "CompanyII@aol.com";
                }
                else if ((lstcompanyAffected.SelectedValue.ToString() == "CompanyIII"))
                {
                    outageId.Text = "3";
                    txtEmailAddresses.Text = "CompanyIII@aol.com";
                }
                else if ((lstcompanyAffected.SelectedValue.ToString() == "CompanyIV"))
                {
                    outageId.Text = "4";
                    txtEmailAddresses.Text = "CompanyIV@aol.com";
                }
         //call insertOutage Function
                InsertOuage();
                //call InsertOutageDetail Function
                InsertOutageDetail();
                //call sendEmail Function
                sendEmail();
            }

        } // end foreach

       panelSendEmail.Visible = false;
       panelMailSent.Visible = true;
    }
4

1 回答 1

2

您的内部条件语句基于“lstcompanyAffected.SelectedValue”,每次 for 循环重复时,它总是相同的项目。更改 if 语句以查看您的“项目”循环变量。

于 2012-10-15T19:09:09.240 回答