我开发了一个由asp.net文本框和一个ListBox控件组成的表单,该控件设置为“Multiple”,有四个公司。 单击提交按钮时,表单将输入的数据插入数据库中的两个不同的表中,并向相应的公司发送电子邮件 - 一切正常 ...除非我尝试选择多家公司 - 我的代码只会提交所选的第一家公司,但会根据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;
}
答案 0 :(得分:2)
您的内部条件语句基于“lstcompanyAffected.SelectedValue”,每次for循环重复时,它始终是相同的项目。更改if语句,改为查看“item”循环变量。