3

フォームを送信すると、フォームの結果が記載されたメールが届きます。この場合、3つのチェックボックスのいずれかが選択されている場合に表示されます。私の現在の問題は、複数のチェックボックスが選択されている場合、2番目または3番目のチェックボックスが選択されていることを表示しないことです。

例:3つのチェックボックスすべてをチェックすると、結果は次のようになります。

  • マーケティングメーリング:はい
  • サードパーティのメーリング:いいえ
  • VISAプロモーション:いいえ

いつ彼ら全員がこのように「はい」と言っているように表示する必要があります:

  • マーケティングメーリング:はい
  • サードパーティのメーリング:はい
  • VISAプロモーション:はい

私のフロントページコード:

<td class="nobor">
        <asp:CheckBoxList ID="OptList" runat="server">
        </asp:CheckBoxList>

マイページの読み込み:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            OptList.Items.Add(new ListItem("Marketing Mailings", "1"));
            OptList.Items.Add(new ListItem("3rd Party Mailings", "2"));
            OptList.Items.Add(new ListItem("VISA Promotions", "3"));
        }

メールの本文が作成されるSubmit_Click内:

sb.Append("<u>Opt-Out Preference</u><br/>");

if (OptList.SelectedItem.Value == "1") sb.Append("<b>Marketing Mailings:</b>&nbsp;Yes<br />");
else sb.Append("<b>Marketing Mailings:</b>&nbsp;No<br />");

if (OptList.SelectedItem.Value == "2") sb.Append("<b>3rd Party Mailings:</b>&nbsp;Yes<br />");
else sb.Append("<b>3rd Party Mailings:</b>&nbsp;No<br />");

if (OptList.SelectedItem.Value == "3") sb.Append("<b>VISA Promotions:</b>&nbsp;Yes<br />");
else sb.Append("<b>VISA Promotions:</b>&nbsp;No<br />");
4

1 に答える 1

1

SelectedItem、すべてではなく 1 つのアイテムを返します。
コードを次のように変更する必要があります。

if (OptList.Items[0].Selected) sb.Append("<b>Marketing Mailings:</b>&nbsp;Yes<br />");
else sb.Append("<b>Marketing Mailings:</b>&nbsp;No<br />");

if (OptList.Items[1].Selected) sb.Append("<b>3rd Party Mailings:</b>&nbsp;Yes<br />");
else sb.Append("<b>3rd Party Mailings:</b>&nbsp;No<br />");

SelectedItemなど...値の代わりに選択されている場合、各アイテムをチェックしていることに注意してください。

もう 1 つのオプションは、すべての項目を反復処理して、選択されている項目を見つけることです。

var ListOfSelectedValues = OptList.Items.Cast<ListItem>().Where(x => x.Selected).Select(x => x.Value).ToList();

これにより、選択されたすべての値のリストが返されます...

于 2013-01-02T23:12:21.837 に答える