2010-02-17 32 views
5

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

回答

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的每一行,你可以使那些下拉菜单autocompleters或创建一个隐藏的下拉,只有呈现HTML一次,然后用了jQuery或JavaScript来填充所有网格下拉客户端侧。

0

您可以在标记通过设置:

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

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

HTH。

0

你也可以使用的RowDataBound事件GridView或通过@布赖恩

描述
相关问题