检查列表 - 将所选值放入标签集(文本)中
本文关键字:标签集 文本 列表 检查 | 更新日期: 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 开始。相应地调整。此外,还调整了代码以检查是否找到标签。