【问题标题】:How to set a dropdownlist item as selected in ASP.NET?如何在 ASP.NET 中设置下拉列表项?
【发布时间】:2012-06-11 05:49:11
【问题描述】:

我想为asp设置selecteditem。 net dropdownlist 以编程方式控制。

所以我想向下拉列表控件传递一个值来设置所选项目,其中项目的值等于传递的值。

【问题讨论】:

  • 还有什么问题/疑问?
  • 显示一些代码@farouk,然后我们会尽力帮助你......

标签: c# asp.net


【解决方案1】:
dropdownlist.ClearSelection(); //making sure the previous selection has been cleared
dropdownlist.Items.FindByValue(value).Selected = true;

【讨论】:

  • 但是问题在于你必须将它包裹在一个像 Try() 或 ListItem 测试这样的错误检查中。如果“值”的值在下拉列表中不存在,则会出现异常(我认为是找不到对象错误)。
  • 有点破坏线程,但这对我不起作用。可能有什么新的解决方案?
  • @gadria。您似乎错过了您试图通过FindByValue 找到的下拉列表中的值
  • @RabNawaz 我确定我提供的 value 属性在那里,因为当我将值发送到我的 SQL 查询时,我看到这些值是正确的。
  • 在我的情况下,这不是触发“SelectedIndexChanged”事件
【解决方案2】:

您可以将SelectedValue 设置为您要选择的值。如果您已经选择了项目,那么您应该清除选择,否则您会收到“Cannot have multiple items selected in a DropDownList”错误。

dropdownlist.ClearSelection();
dropdownlist.SelectedValue = value;

您也可以使用ListItemCollection.FindByTextListItemCollection.FindByValue

dropdownlist.ClearSelection();  
dropdownlist.Items.FindByValue(value).Selected = true;

使用 FindByValue 方法在集合中搜索 ListItem 具有包含由值指定的值的值属性 范围。此方法执行区分大小写和 文化不敏感的比较。此方法不做局部 搜索或通配符搜索。如果项目中没有找到 使用此条件收集,返回 null,MSDN

如果您预计您可能正在寻找不会出现在DropDownList ListItem 集合中的文本/值,那么您必须检查您之前是否从FindByTextFindByValue 获得ListItem 对象或null您访问 Selected 属性。如果您在返回 null 时尝试访问 Selected,那么您将得到 NullReferenceException

ListItem listItem = dropdownlist.Items.FindByValue(value);

if(listItem != null) 
{
   dropdownlist.ClearSelection();
   listItem.Selected = true;
}

【讨论】:

  • 提到的解决方案对我不起作用,但这个解决方案就像一个魅力
  • @eka808 能否根据 Yosi 的问题详细说明您的评论?
【解决方案3】:

您可以使用 FindByValue 方法在 DropDownList 中搜索具有与参数匹配的值的项。

dropdownlist.ClearSelection();
dropdownlist.Items.FindByValue(value).Selected = true;

或者,您可以使用 FindByText 方法在 DropDownList 中搜索具有与参数匹配的文本的项。

在使用 FindByValue 方法之前,不要忘记重置 DropDownList 以便使用 ClearSelection() 方法选择任何项目。它清除列表选择并将所有项目的 Selected 属性设置为 false。否则会出现以下异常。

"Cannot have multiple items selected in a DropDownList"

【讨论】:

    【解决方案4】:

    这是一个非常漂亮和干净的例子:(查看这个很棒的教程以获得完整的解释link

    public static IEnumerable<SelectListItem> ToSelectListItems(
                  this IEnumerable<Album> albums, int selectedId)
    {
        return 
            albums.OrderBy(album => album.Name)
                  .Select(album => 
                      new SelectListItem
                      {
                        Selected = (album.ID == selectedId),
                        Text = album.Name,
                        Value = album.ID.ToString()
                       });
    }
    

    在此 MSDN link 中,您可以阅读 de DropDownList 方法文档。

    希望对你有帮助。

    【讨论】:

      【解决方案5】:

      设置下拉属性

      selected="true"
      

      【讨论】:

        猜你喜欢
        • 2019-08-05
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-02
        相关资源
        最近更新 更多