Есть ли причина, по которой CheckBoxList в ASP.NET не имеет члена SelectedItems? - PullRequest
1 голос
/ 22 сентября 2010

Всякий раз, когда я хочу получить выбранные элементы, я должен пройтись по каждому элементу и посмотреть, выбран ли он.У них даже есть элемент SelectedItem (без «s» в конце), который кажется странным для CheckBoxList.Кажется, что это логично, кто-нибудь знает, почему они его не добавили?

Ответы [ 4 ]

4 голосов
/ 22 сентября 2010

В дополнение к ответам Дастина и Драхенштерна. Вы можете свернуть свои собственные: -)

public static IEnumerable<ListItem> SelectedItems(this CheckBoxList cbl)
{
    return cbl.Items.Cast<ListItem>().Where(l=>l.Selected == true);
}
4 голосов
/ 22 сентября 2010

Потому что они не реализуют SelectedItem в CheckBoxList, а в ListControl, от которого наследуется CheckBoxList. Можно утверждать, что CheckBoxList должен быть возвращен к источнику, так как многие из написанных им способов просто не «правильны», но это субъективный аргумент. (это тема личной напыщенной речи, я только что натолкнулся на слишком много случаев, когда CheckBoxList делал что-то глупо, и это раздражает, вот и все. Я полагаю, не так, как работает мой разум, и никто никогда не подтверждал, что это так. их тоже раздражает.)

3 голосов
/ 22 сентября 2010

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

Это часть документация .Также обратите внимание, что SelectedIndex вернет элемент с наименьшим индексом .

Элемент управления CheckBoxList предоставляет группу флажков с несколькими вариантами выбора, которые можно динамически генерировать с помощью привязки данных.Он содержит коллекцию предметов, элементы которой соответствуют отдельным предметам в списке.Чтобы определить, какие элементы проверяются, выполните итерацию по коллекции и проверьте свойство Selected каждого элемента в списке.

1 голос
/ 22 сентября 2010

Также довольно легко создать подкласс CheckBoxList и реализовать эту функцию самостоятельно, которую затем можно использовать повторно.

public class ExtendedCheckBoxList : CheckBoxList
{
    public List<string> SelectedItems
    {
        get
        {
            return (from ListItem item in Items
                    where item.Selected
                    select item.Value).ToList();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...