如何在标记中设置DropDownList所选项?

时间:2010-02-17 19:39:20

标签: asp.net data-binding drop-down-menu listitem

我在GridView控件的模板列中有一个DropDownList。 GridView绑定到对象列表。每个对象都有一个int类型的属性,它对应于一个DropDownLists ListItems中的值。我可以通过在下拉列表中添加DataBind事件来以编程方式设置所选项目,但我想知道是否有办法通过在aspx标记中使用代码块来设置所选项目。

3 个答案:

答案 0 :(得分:9)

在此设计中要谨慎。以这种方式创建网格下拉意味着对于下拉列表中的每个选项,您将重复每一行。如果您有多个行或多个下拉列,这可以非常快速地添加到超过MB的页面大小,这将降低性能。

话虽如此,您可以使用上下文绑定脚本标记在标记中执行此操作:

<asp:DropDown id="dropDown1" SelectedValue='<%# Eval("Key") %>' runat="server"/>

上下文绑定标记还允许您在页面/用户控件上调用公共/受保护函数:

<asp:DropDown id="dropDown1" SelectedValue='<%# myFunction((int) Eval("Key")) %>' runat="server"/>

public string myFunction(int key){
  return key.ToString();
}

作为为每一行生成相同重复HTML的替代方法,您可以创建这些下拉自动填充程序或创建隐藏下拉列表,只显示HTML一次,然后使用JQuery或JavaScript填充所有网格下拉客户端。

答案 1 :(得分:0)

您可以通过以下方式在标记中进行设置:

<ItemTemplate>
<asp:DropDown .. SelectedValue='<%# Eval("Key") %>' />
</ItemTemplate>

取决于你如何绑定它,你使用数据源控件吗?无论如何,我注意到这种方法可能会尝试在项目绑定之前设置值,这可能会引发异常。不确定,曾经发生过一次,认为可能是这样,但我应该更深入地研究它。

HTH。

答案 2 :(得分:0)

你也可以使用GridView RowDataBound 事件,或者你可以选择@Brian所描述的标记