我想为asp设置selecteditem。以编程方式控制网络下拉列表。
所以我想将一个值传递给下拉列表控件来设置所选项目,其中项目的值等于传递的值。
答案 0 :(得分:64)
dropdownlist.ClearSelection(); //making sure the previous selection has been cleared
dropdownlist.Items.FindByValue(value).Selected = true;
答案 1 :(得分:32)
您可以将SelectedValue
设置为您要选择的值。如果您已经选择了项目,那么您应该清除选择,否则您将收到“Cannot have multiple items selected in a DropDownList”错误。
dropdownlist.ClearSelection();
dropdownlist.SelectedValue = value;
您还可以使用ListItemCollection.FindByText或ListItemCollection.FindByValue
dropdownlist.ClearSelection();
dropdownlist.Items.FindByValue(value).Selected = true;
使用FindByValue方法在集合中搜索ListItem 使用包含值指定的值的Value属性 参数。此方法执行区分大小写和 文化不敏感的比较。这种方法不做部分 搜索或通配符搜索。如果在中找不到某个项目 使用此条件的集合,返回null MSDN。
如果您希望找到DropDownList
ListItem集合中不存在的文本/值,那么您必须检查ListItem
对象或null
是否来自FindByText
访问Selected属性之前1}}或FindByValue
。如果您在返回null时尝试访问Selected,那么您将获得NullReferenceException。
ListItem listItem = dropdownlist.Items.FindByValue(value);
if(listItem != null)
{
dropdownlist.ClearSelection();
listItem.Selected = true;
}
答案 2 :(得分:25)
您可以使用FindByValue方法在DropDownList中搜索值与参数匹配的Item。
dropdownlist.ClearSelection();
dropdownlist.Items.FindByValue(value).Selected = true;
或者,您可以使用FindByText方法在DropDownList中搜索与参数匹配的文章。
在使用FindByValue方法之前,不要忘记重置DropDownList,以便使用ClearSelection()方法不选择任何项目。它清除列表选择并将所有项的Selected属性设置为false。否则您将获得以下异常。
"Cannot have multiple items selected in a DropDownList"
答案 3 :(得分:0)
这是一个非常好的和干净的例子:(查看这个很棒的教程以获得完整的解释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
方法文档。
希望它有所帮助。
答案 4 :(得分:-3)
设置下拉属性
selected="true"