2013-02-05 94 views
2

我們可以下面的語法使通過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個項目給它?

回答

4

是的,你可以添加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(); 
0
for(int i=1;i<=100;i++) 
{ 
    ListItem li=new ListIem(i.ToString(),i.ToString()); 
    test.Items.add(li); 
} 
1

肯定的是,你的代碼隱藏:

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

下面是一些僞代碼:

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

你必須找出到底是如何創建的列表項,並用值來填充它。

+0

你必須編輯自己的帖子;-)能力 – freefaller

+0

D'哦!感謝您的推動。 – markp3rry

1

將下拉列表直接綁定到數字集合上呢?

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

這是個神奇的主意! –

0

非常基本的代碼...

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