Скопируйте ListItems в ListItemCollection элементов DropDownList без использования цикла for - PullRequest
0 голосов
/ 27 сентября 2018

Я динамически генерирую много ящиков DropDownList (на странице веб-формы ASP.NET), которые позволяют пользователю выбирать значение от 0 до 24 из списка.DropDownList имеет свойство ListItemCollection Items, и я хотел бы иметь возможность копировать ListItems в эту коллекцию без необходимости использовать цикл For для каждого DropDownList.

Сначала я надеялся создать List<ListItems> сзначения 0-24 со следующим кодом:

List<ListItem> listHours = new List<ListItem>();
for (int hr = 0; hr < 25; hr++)
{
    listHours.Add(new ListItem(hr.ToString(), hr.ToString()));
}

И затем скопируйте этот список в каждый DropDownList.

Похоже, что вы не можете установить свойство Item DropDownList (т.е. myDropDownList.Items = listHours), так как вы получаете ошибку, что «… Items не имеет установщика».

Я могу написать функцию для заполнения каждого DropDownListсо значениями 1-24, но это будет использовать цикл for и займет больше времени.

Есть ли способ скопировать список элементов (будь то List<ListItems>, массив ListItem и т. д.) в DropDownList без использования цикла for?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Я думал что-то похожее на Юджина.Вот это в 1 строке:

 DropDownList1.Items.AddRange(Enumerable.Range(0, 25).Select(x => new ListItem(x.ToString(), x.ToString())).ToArray());
0 голосов
/ 27 сентября 2018

Вы можете использовать метод AddRange:

List<ListItem> listHours = new List<ListItem>();
for (int hr = 0; hr < 25; hr++)
{
     listHours.Add(new ListItem(hr.ToString(), hr.ToString()));
}
myDropDownList.Items.AddRange(listHours.ToArray());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...