检查清单 - 将选定的值添加到标签集(文本)

时间:2011-05-20 14:32:17

标签: c# .net checkboxlist

一旦用户选择了5个值,我将禁用CheckBoxList。

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

到目前为止,我有这个:

string test = "";
string test2 = "";

test += CheckBoxList.SelectedValue[0];
test2 += CheckBoxList.SelectedValue[1];

Label1.Text = test;
Label2.Text = test2;

所有这一切都是获取第一个字符并为两个标签分配相同的值。我将如何迭代并获取每个选定的值并将它们分配给每个标签?

2 个答案:

答案 0 :(得分:0)

这是一个通用代码,适用于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开始。相应调整。此外,调整代码以检查是否找到了标签。

答案 1 :(得分:0)

    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;