【问题标题】:How do i compare a value to a multiple list items in a dropdownlist?如何将一个值与下拉列表中的多个列表项进行比较?
【发布时间】:2014-04-24 07:47:21
【问题描述】:

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

这是我目前所拥有的

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 逻辑,即“其他”。

【问题讨论】:

  • ddlgameTile.Items.ToString() 没有意义,它只是返回ListItemCollection 的类型名称。我认为这是您的问题的原因,因为您在 if-statement 中使用它。但是,我不确定您实际上要做什么。
  • 我知道,我只需要暂时放一些东西。如果我想硬编码gameTitle,它会像我期望的那样工作。我只是想与列表项的其余部分进行比较
  • 为什么要临时放些垃圾?
  • 我仍在思考分配gameTitle 变量的正确方法。
  • 您希望游戏名称是什么?我不确定你想要达到什么目的......

标签: c# asp.net loops listitem


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    这样的事情怎么样?

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

    【讨论】:

      【解决方案3】:

      假设我有你想要实现的正确的上下文,试试这个:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-24
        • 1970-01-01
        • 2022-01-09
        • 2018-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多