在不使用for循环的情况下,将ListItems复制到DropDownList项目的ListItemCollection中

时间:2018-09-27 19:19:37

标签: c# asp.net webforms html-select

我正在动态生成许多DropDownList框(在ASP.NET WebForm页面上),允许用户从列表中选择0到24之间的值。 DropDownList具有ListItemCollection Items属性,我希望能够将ListItems复制到此集合,而不必为每个DropDownList使用For循环。

我最初希望使用以下代码创建一个值为0-24的List<ListItems>

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

然后将此列表复制到每个DropDownList。

您似乎无法设置DropDownList的Item属性(即myDropDownList.Items = listHours),因为出现了“…Items没有设置器”的错误。

我可以编写一个函数来用值1-24填充每个DropDownList,但这将使用for循环并花费更多时间。

是否有一种方法可以将项目列表(例如List<ListItems>,ListItem的数组等)复制到DropDownList而不需要使用for循环?

2 个答案:

答案 0 :(得分:0)

您可以使用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());

答案 1 :(得分:0)

我在想类似Eugene的东西。 这里是1行:

 DropDownList1.Items.AddRange(Enumerable.Range(0, 25).Select(x => new ListItem(x.ToString(), x.ToString())).ToArray());