Список, сохраняющий несколько выбранных элементов в asp.net - PullRequest
0 голосов
/ 30 июля 2010

Я сохраняю критерии выбора поиска списка на другой странице, которая называется AreasLb. Можно выбрать несколько областей, я просто хочу установить элементы списка, которые пользователь выбрал как .Selected = true

Я думаю приведенный ниже код должен работать, но это не так, при этом элементы в списке не выбираются.

    if (s == "Areas")
            {
                string[] area = nv[s].Substring(0, (nv[s].Length - 1)).Split(';');

                int i = 0;
                foreach (ListItem item in AreasLb.Items)
                {
                    foreach (var s1 in area)
                    {
                        if (s1 == item.Value)
                        {
                            AreasLb.Items[i].Selected = true;                                
                        }
                        continue;
                    }

                    i = i + 1;
                }

                continue;
            }

Ответы [ 2 ]

0 голосов
/ 26 ноября 2010

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

Я в основном брал код, который написал кто-то другой, и на протяжении всего шоу было несколько Page.DataBind ().

Переформулирован, поэтому только 1 на главной странице, и это, похоже, решило проблему.

0 голосов
/ 30 июля 2010

Я немного подозрительно отношусь к вашему выбору на основе индекса - я не говорю, что это неправильно, но я думаю, что могут быть и лучшие способы. Я хотел бы использовать:

string[] area = nv[s].Substring(0, (nv[s].Length - 1)).Split(';');

foreach (ListItem item in AreasLb.Items)
{
    foreach (var s1 in area)
    {
        if (s1 == item.Value)
        {
            item.Selected = true;                                
        }
    }
}

Или вместо того, чтобы перебирать набор ListItems, вы можете использовать метод Items.FindByText, который вырезает foreach и может дать вам некоторое увеличение производительности :-):

ListItem foundItem = null;

string[] area = nv[s].Substring(0, (nv[s].Length - 1)).Split(';');

foreach (var s1 in area)
{
    // Search for a ListItem with the text from the array
    foundItem = AreasLb.Items.FindByText(s1);

    if (foundItem == null)
    {
        // We didn't find a matching item
    }
    else
    {
        // We found a matching item so select it
        foundItem.Selected = true;
    }

    foundItem = null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...