CheckboxList显示所有选中的框
本文关键字:显示 CheckboxList | 更新日期: 2023-09-27 17:50:40
我提交表单并收到一封电子邮件,其中说明了表单的结果,在本例中,如果三个复选框中的任何一个被选中,则会收到邮件。我目前的问题是,它不会显示第二个或第三个复选框被选中,如果多个复选框被选中。
示例:我选中了所有三个复选框,结果是:
- 营销邮件:是
- 第三方邮件:No
- VISA促销:无
应该像这样显示所有的Yes:
- 营销邮件:是
- 第三方邮件:是
- VISA促销:是
我的首页代码:
<td class="nobor">
<asp:CheckBoxList ID="OptList" runat="server">
</asp:CheckBoxList>
My Page Load:
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> Yes<br />");
else sb.Append("<b>Marketing Mailings:</b> No<br />");
if (OptList.SelectedItem.Value == "2") sb.Append("<b>3rd Party Mailings:</b> Yes<br />");
else sb.Append("<b>3rd Party Mailings:</b> No<br />");
if (OptList.SelectedItem.Value == "3") sb.Append("<b>VISA Promotions:</b> Yes<br />");
else sb.Append("<b>VISA Promotions:</b> No<br />");
SelectedItem
将返回一个项,而不是所有项。
您应该这样修改代码:
if (OptList.Items[0].Selected) sb.Append("<b>Marketing Mailings:</b> Yes<br />");
else sb.Append("<b>Marketing Mailings:</b> No<br />");
if (OptList.Items[1].Selected) sb.Append("<b>3rd Party Mailings:</b> Yes<br />");
else sb.Append("<b>3rd Party Mailings:</b> No<br />");
等等……请注意,我正在检查每个项目,如果它被选中,而不是SelectedItem
值。
另一个选项是遍历所有项并找到被选中的项:
var ListOfSelectedValues = OptList.Items.Cast<ListItem>().Where(x => x.Selected).Select(x => x.Value).ToList();
这将返回所有值被选中的列表…