0

asp.netテキストボックスと4つの会社を持つ「Multiple」に設定された1つのListBoxコントロールで構成されるフォームを開発しました。送信ボタンをクリックすると、フォームは入力されたデータをデータベース内の2つの異なるテーブルに挿入し、それぞれの会社に電子メールを送信します。すべて正常に機能します。複数の会社を選択しようとした場合を除き、コード最初に選択された会社のみを送信しますが、リストボックスで選択された会社の数に基づいて最初に選択された会社のデータを挿入します。たとえば、2つの会社を選択した場合、最初に選択した会社が2回入力されます。4回、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

内部条件ステートメントは、for ループが繰り返されるたびに常に同じ項目である「lstcompanyAffected.SelectedValue」に基づいています。if ステートメントを変更して、代わりに「item」ループ変数を調べます。

于 2012-10-15T19:09:09.240 に答える