如何将值与下拉列表中的多个列表项进行比较?

时间:2014-04-24 07:47:21

标签: c# asp.net loops listitem

我试图在这里做一个逻辑,如果来自db的项目存在于下拉列表ListItem的一部分中,它将选择该项目,否则它将在文本框中显示新项目并具有&# 34;其他"在下拉列表中选择。

这是我到目前为止所拥有的

string gameData = readGame["gTitle"].ToString();
string gameTitle = ddlgameTile.Items.ToString();

if (printHouseData == gameTitle)
{
   ddlgameTile.SelectedIndex = ddlgameTile.Items.IndexOf(ddlgameTile.Items.FindByValue(gameData));
}
else
{
   txtNewGame.Text = readGame["gTitle"].ToString();
   ddlgameTile.SelectedIndex = ddlgameTile.Items.IndexOf(ddlgameTile.Items.FindByValue("Others"));
}

我尝试使用Foreach循环和for循环,它仍然无法正常工作。它只获得最后一个ListItem的if-else逻辑,它是"其他"。

3 个答案:

答案 0 :(得分:1)

假设gameData是您要选择的 db 项目,如果它存在,您可以使用ListItemCollection.FindByValue获取项目,如果是null不存在。然后,您可以设置DropDownList.SelectedValue来选择它:

string selectedValue = "Others";
if(ddlgameTile.Items.FindByValue(gameData) != null)
    selectedValue = gameData;
ddlgameTile.SelectedValue = selectedValue;

但是,如果您设置了DataValueFieldDataTextField,则必须使用FindByText

答案 1 :(得分:0)

这样的事情怎么样?

        var compareTo = new ListItem("Title","Value");
        if (ddl.Items.Contains(compareTo))
        {
            var selectedIndex = ddl.Items.IndexOf(compareTo);
        }
        else
        {
            var selectedIndex = 
                 ddl.Items.IndexOf(new ListItem { Value = "Others", Text = "Others" });
        }

答案 2 :(得分:0)

假设我有你正在努力实现的目标的背景,试试这个:

foreach (string gameTitle in ddlgameTile.Items)
{
    if (printHouseData == gameTitle)
    {
        ddlgameTile.SelectedIndex = ddlgameTile.Items.IndexOf(ddlgameTile.Items.FindByValue(gameData));
    }
    else
    {
        txtNewGame.Text = readGame["gTitle"].ToString();
        ddlgameTile.SelectedIndex = ddlgameTile.Items.IndexOf(ddlgameTile.Items.FindByValue("Others"));
    }
}