我试图在这里做一个逻辑,如果来自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逻辑,它是"其他"。
答案 0 :(得分:1)
假设gameData
是您要选择的 db 项目,如果它存在,您可以使用ListItemCollection.FindByValue
获取项目,如果是null
不存在。然后,您可以设置DropDownList.SelectedValue
来选择它:
string selectedValue = "Others";
if(ddlgameTile.Items.FindByValue(gameData) != null)
selectedValue = gameData;
ddlgameTile.SelectedValue = selectedValue;
但是,如果您设置了DataValueField
和DataTextField
,则必须使用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"));
}
}