【发布时间】:2012-06-11 05:49:11
【问题描述】:
我想为asp设置selecteditem。 net dropdownlist 以编程方式控制。
所以我想向下拉列表控件传递一个值来设置所选项目,其中项目的值等于传递的值。
【问题讨论】:
-
还有什么问题/疑问?
-
显示一些代码@farouk,然后我们会尽力帮助你......
我想为asp设置selecteditem。 net dropdownlist 以编程方式控制。
所以我想向下拉列表控件传递一个值来设置所选项目,其中项目的值等于传递的值。
【问题讨论】:
dropdownlist.ClearSelection(); //making sure the previous selection has been cleared
dropdownlist.Items.FindByValue(value).Selected = true;
【讨论】:
FindByValue 找到的下拉列表中的值
value 属性在那里,因为当我将值发送到我的 SQL 查询时,我看到这些值是正确的。
您可以将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 具有包含由值指定的值的值属性 范围。此方法执行区分大小写和 文化不敏感的比较。此方法不做局部 搜索或通配符搜索。如果项目中没有找到 使用此条件收集,返回 null,MSDN。
如果您预计您可能正在寻找不会出现在DropDownList ListItem 集合中的文本/值,那么您必须检查您之前是否从FindByText 或FindByValue 获得ListItem 对象或null您访问 Selected 属性。如果您在返回 null 时尝试访问 Selected,那么您将得到 NullReferenceException。
ListItem listItem = dropdownlist.Items.FindByValue(value);
if(listItem != null)
{
dropdownlist.ClearSelection();
listItem.Selected = true;
}
【讨论】:
您可以使用 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"
【讨论】:
这是一个非常漂亮和干净的例子:(查看这个很棒的教程以获得完整的解释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 方法文档。
希望对你有帮助。
【讨论】:
设置下拉属性
selected="true"
【讨论】: