39

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

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

4

5 回答 5

74
dropdownlist.ClearSelection(); //making sure the previous selection has been cleared
dropdownlist.Items.FindByValue(value).Selected = true;
于 2012-06-11T05:55:44.700 回答
33

您可以将 设置为SelectedValue您要选择的值。如果您已经选择了项目,那么您应该清除选择,否则您会收到“不能在 DropDownList 中选择多个项目”错误。

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

您还可以使用ListItemCollection.FindByTextListItemCollection.FindByValue

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

使用 FindByValue 方法在集合中搜索具有 Value 属性的 ListItem,该属性包含由 value 参数指定的值。此方法执行区分大小写和不区分区域性的比较。此方法不执行部分搜索或通配符搜索。如果使用此条件在集合中未找到项目,则返回 null,MSDN

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

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

if(listItem != null) 
{
   dropdownlist.ClearSelection();
   listItem.Selected = true;
}
于 2012-06-11T05:49:44.470 回答
26

您可以使用 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"
于 2012-06-11T05:58:33.863 回答
0

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

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链接中,您可以阅读DropDownList方法文档。

希望能帮助到你。

于 2012-06-11T05:56:47.437 回答
-4

设置下拉属性

selected="true"
于 2016-04-22T09:46:28.123 回答