Контрольный список - Получить выбранные значения в набор меток (текст) - PullRequest
4 голосов
/ 20 мая 2011

Я отключу CheckBoxList, как только пользователь выберет 5 значений.

Я хочу вынуть 5 выбранных элементов из CheckBoxList и назначить их 5 различным меткам.

Пока у меня есть это:

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

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

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

Все, что нужно сделать, это получить первый символ и присвоить одинаковое значение обеим меткам. Как бы мне перебрать и взять каждое выбранное значение и назначить их каждому ярлыку?

Ответы [ 2 ]

0 голосов
/ 20 мая 2011
    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;
0 голосов
/ 20 мая 2011

Вот общий код, подходящий для 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.Отрегулируйте соответственно.Кроме того, код был скорректирован, чтобы проверить, была ли найдена метка.

...