用数字填充asp.net下拉列表

4

一个简单的查询,我想用数字17到90填充下拉列表,并且最后一个数字应该是一个字符串“90+”,而不是90。我猜逻辑将使用类似于for循环的东西:

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

我想将每个列表项的文本和值都用相同的数字填充。有什么好的想法吗?
6个回答

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

5

试试这个:

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

我不想在一个竞争性的回答中显得太学究,但如果我知道唯一的例外是最后一项,为什么我还要把逻辑放在for循环中呢?只需在循环之外添加特殊项即可。这也更清晰明了。 - Tim Schmelter
我同意 @TimSchmelter 的观点,你需要检查所有的数字。 - Mr A
@TimSchmelter 没错,你回答得对,所以我会保留我的原始回答。 - rs.

3

这很简单。您需要实例化ListItem类,并填充其属性,然后将其添加到下拉列表中。

    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”。 - James Johnson

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

为什么要传递数字两次? - Mr A
它设置了文本和值。 - James Johnson
你忘记在最后加上90+了 ;) - Tim Schmelter

2
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

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+");
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接