一旦用户选择了5个值,我将禁用CheckBoxList。
我想从CheckBoxList中取出5个选定的项目并将它们分配给5个不同的标签。
到目前为止,我有这个:
string test = "";
string test2 = "";
test += CheckBoxList.SelectedValue[0];
test2 += CheckBoxList.SelectedValue[1];
Label1.Text = test;
Label2.Text = test2;
所有这一切都是获取第一个字符并为两个标签分配相同的值。我将如何迭代并获取每个选定的值并将它们分配给每个标签?
答案 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;