使通过foreach循环下拉列表在ASP.Net

问题描述:

我们可以下面的语法使通过foreach循环下拉列表在ASP.Net

<asp:DropDownList ID="test" runat="server"> 
     <asp:ListItem Text="1" Value="1"></asp:ListItem> 
</asp:DropDownList> 

,如果我们希望我们的组合框包含1到1000,有没有办法在asp.net组件下拉列表用foreach循环填充它,而不是手动添加1000个项目给它?

是的,你可以添加ListItems编程:

for(int i=1; i<=1000; i++) 
{ 
    ListItem item = new ListItem(i.ToString(), i.ToString()); 
    test.Items.Add(item); 
} 

ListItemCollection.Add

你也可以使用这个LINQ查询,并把它作为数据源:

var source = Enumerable.Range(1, 1000) 
    .Select(i => new { Text= i.ToString(), Value=i.ToString() }); 
test.DataSource = source; 
test.DataTextField = "Text"; 
test.DataValueField = "Value"; 
test.DataBind(); 

for(int i=1;i<=100;i++) 
{ 
    ListItem li=new ListIem(i.ToString(),i.ToString()); 
    test.Items.add(li); 
} 

肯定的是,你的代码隐藏:

if (!Page.IsPostBack) 
{ 
    // Populate DropDownList 
    for (int i = 1; i < 1001; i++) 
    { 
     ListItem li = new ListItem(i.ToString(),i.ToString()); 
     test.Items.Add(li); 
    } 
} 

下面是一些伪代码:

for (int i = 0; i < 1000; i++) 
{ 
    ListItem item = new ListItem(); 
    item.Text = i.ToString(); 
    test.Items.Add(item); 
} 

你必须找出到底是如何创建的列表项,并用值来填充它。

+0

你必须编辑自己的帖子;-)能力 – freefaller

+0

D'哦!感谢您的推动。 – markp3rry

将下拉列表直接绑定到数字集合上呢?

IEnumerable<int> numbers = Enumerable.Range(1, 1000); 
test.DataSource = numbers; 
test.DataBind(); 
+0

这是个神奇的主意! –

非常基本的代码...

if(!Page.IsPostBack) 
{ 
    for (int i = 1; i <= 1000; i++) 
    { 
    test.Items.Add(new ListItem(i.ToString(), i.ToString())); 
    } 
}