【问题标题】:How can you set the selected item in an ASP.NET dropdown via the display text?如何通过显示文本在 ASP.NET 下拉列表中设置所选项目?
【发布时间】:2011-04-04 23:30:47
【问题描述】:

我有一个通过数据绑定填充的 ASP.NET 下拉列表。我有与要选择的列表项的显示文本相匹配的文本。我显然不能使用 SelectedText(仅限 getter)而且我不知道索引,所以我不能使用 SelectedIndex。我目前通过遍历整个列表来选择项目,如下所示:

平均售价:

<asp:DropDownList ID="ddItems" runat="server" /> 

代码:

ddItems.DataSource = myItemCollection;
ddItems.DataTextField = "Name";
ddItems.DataValueField = "Id";

foreach (ListItem item in ddItems.Items)
{
    if (item.Text == textToSelect)
    {
        item.Selected = true;
    }
}

有没有办法在不遍历所有项目的情况下做到这一点?

【问题讨论】:

  • 这可能是一个简单/愚蠢的问题,但我对 ASP 网络表单相当陌生。
  • 绝对不简单也不愚蠢。 @kbrimington 为您提供正确的答案。

标签: c# asp.net webforms


【解决方案1】:

你可以试试:

ddItems.Items.FindByText("Hello, World!").Selected = true;

或者:

ddItems.SelectedValue = ddItems.Items.FindByText("Hello, World!").Value;

请注意,如果您不确定是否存在与您的显示文本匹配的项目,您可能需要检查FindByText() 的结果是否为null

请注意,我在多选列表上使用第一种方法,例如 CheckBoxList 来添加额外的选择。我使用第二种方法来覆盖所有选择。

【讨论】:

  • 你打败了我。我使用第一个选项。
  • 空引用检查应该用于这些选项中的任何一个。你不能保证文本会在那里。
  • @rock:感谢您的回复。我添加了一条说明,说明何时我会选择其中一个。
  • @KP:谢谢。我已经提到了这一点,但为了清楚起见,将其省略了。此外,还有一些情况可以保证文本存在并节省几行代码。
  • 谢谢!快速解答且有效。
【解决方案2】:

使用ListItemCollection类的FindByText方法,如:

ListItem itemToSelect = ddlItems.Items.FindByText("some text to match");

if(itemToSelect != null)
{
    itemToSelect.Selected = true;
}

【讨论】:

    【解决方案3】:

    它工作正常..

    drplistcountry.SelectedIndex = 
    drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));
    

    或者

    drplistcountry.ClearSelection();
    drplistcountry.SelectedIndex = 
    drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));
    

    【讨论】:

      【解决方案4】:

      如果您必须为多个下拉案例选择下拉所选项目文本,请使用这种方式。

      // Call Method
      SelectDropdownItemByText(ddlDropdown.Items.FindByText("test"));
      
      // Define method
      public void SelectDropdownItemByText(ListItem item)
      {
          if (item != null)
          {
              item.Selected = true;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-02
        • 2018-03-01
        • 1970-01-01
        • 2019-09-13
        • 2019-06-15
        相关资源
        最近更新 更多