2012-05-04 217 views
4

一個簡單的查詢,我想填充下拉列表,數字從17開始到90,最後一個數字應該是一個像90+而不是90的字符串。我猜這個邏輯會使用一個循環是這樣的:填充asp.net dropdownlist與編號

for (int a = 17; a <= 90; a++) 
     { 
      ddlAge.Items.Add(a.ToString()); 
     } 

此外,我想填充每個列表項的同一個號碼,文本和價值。 任何想法?

回答

6
for (int i = 17; i < 90; i++) 
{ 
    ddlAge.Items.Add(new ListItem(i.ToString(), i.ToString())); 
} 
ddlAge.Items.Add(new ListItem("90+", "90")); 
2
for (int a = 17; a <= 90; a++) 
{ 
    ddlAge.Items.Add(new ListItem(a.ToString(), a.ToString())); 
} 
+0

你爲什麼經過數2倍 –

+0

DataText和DataValue場 –

+0

它設置文本和值。 –

5

試試這個:

for (int a = 17; a <= 90; a++) 
{ 
    var i = (a == 90 ? a.ToString() + '+': a.ToString()); 
    ddlAge.Items.Add(new ListItem(i, i)); 
} 
+0

+1:很好的答案。 –

+0

我不想在競爭性的答案中更迂腐,但如果我知道唯一的例外是最後一項,爲什麼我應該把邏輯放在for循環中呢?只需在循環外添加特殊項目即可。這使得它更清晰。 –

+0

我同意@TimSchmelter,y檢查所有數字。 –

3

這是很容易做到。您需要實例化ListItem類並填充其屬性,然後將其添加到DropDownList。

private void GenerateNumbers() 
    { 
     // This would create 1 - 10 
     for (int i = 1; i < 11; i++) 
     { 
      ListItem li = new ListItem(); 
      li.Text = i.ToString(); 
      li.Value = i.ToString(); 
      ddlAge.Items.Add(li); 
     } 
    } 
+1

這隻回答問題的一部分。 OP希望最後一項顯示爲「90 +」而不是「90」 –

0
for (int i = 0; i <=91; i++) 
    { 
     if (i == 0) 
     { 
      ddlAge.Items.Add("Select Age"); 
     } 
     else if(i<=90) 
     { 
      ddlAge.Items.Add(i.ToString()); 
      i++; 
     } 
     else 
     { 
     ddlAge.Items.Add("90+"); 
     } 
    } 
1
for (int i = 17; i <= 90; i++) 
{ 
    ddlAge.Items.Add(new ListItem(i.ToString(), i.ToString())); 
} 
ddlAge.Items.Insert(0, new ListItem("Select Age", "0")); //First Item 
ddlAge.Items.Insert(ddlAge.Items.Count, new ListItem("90+", "90+")); //Last Item