代码之家  ›  专栏  ›  技术社区  ›  Jeremy

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

  •  5
  • Jeremy  · 技术社区  · 14 年前

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

    3 回复  |  直到 14 年前
        1
  •  9
  •   jjacka    14 年前

    这个设计要小心。以这种方式创建网格下拉列表意味着对于下拉列表中的每个选项,您将对每一行重复此操作。如果您有多行或多个下拉列,这可以很快地添加到超过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填充所有网格下拉菜单客户端。

        2
  •  0
  •   Brian Mains    14 年前

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

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

    取决于您如何绑定它,您使用的是数据源控件吗?不管是什么情况,我注意到这种方法可能会在绑定项之前尝试设置值,这可能会引发异常。不确定,如果这发生过一次,我想可能是这样,但我应该更深入地研究它。

    Hth.

        3
  •  0
  •   Adeel    14 年前

    您也可以使用 行绑定事件 事件 GridView 或者您可以按照@brian的描述在标记中选择