检查列表 - 将所选值放入标签集(文本)中

本文关键字:标签集 文本 列表 检查 | 更新日期: 2023-09-27 17:56:58

一旦用户选择 5 个值,我将禁用复选框列表。

我想从复选框列表中取出 5 个选定的项目,并将它们分配给 5 个不同的标签。

到目前为止,我有这个:

string test = "";
string test2 = "";
test += CheckBoxList.SelectedValue[0];
test2 += CheckBoxList.SelectedValue[1];
Label1.Text = test;
Label2.Text = test2;

所做的只是获取第一个字符并为两个标签分配相同的值。 我将如何循环访问并获取每个选定值并将它们分配给每个标签?

检查列表 - 将所选值放入标签集(文本)中

    var labels = new List<string>();
    int count = 0;
    foreach (ListItem item in CheckBoxList1.Items)
    {
        if (item.Selected)
            labels.Add(item.Value);
    }

    string mylabel1 = labels.Count > 0 ? labels[0] : string.Empty;
    string mylabel2 = labels.Count > 1 ? labels[1] : string.Empty;
    string mylabel3 = labels.Count > 2 ? labels[2] : string.Empty;
    string mylabel4 = labels.Count > 3 ? labels[3] : string.Empty;
    string mylabel5 = labels.Count > 4 ? labels[4] : string.Empty;

这是一个通用代码,适用于 5 或 50 个项目/标签:

var selected = CheckBoxList.Items.Cast<ListItem>().Where(it => it.Selected)
for (i=0; i < selected.Count(); i++)
{
    lb = FindControl("Label" + i);
    if(lb != null)
        ((Label)lb).Text = selected.ElementAt(i).Value;
}

更新

既然你说你没有 LINQ,你可以这样说:

int i = 0;
foreach (var item in CheckBoxList.Items)
{
    if  (item.Selected)
    {
        lb = FindControl("Label" + i);
        if(lb != null)
            ((Label)lb).Text = item.Value;
        i++;
    }
}

更新 2

请记住,这两种解决方案都假定您的标签从 Label0 开始。相应地调整。此外,还调整了代码以检查是否找到标签。