5

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

4

3 回答 3

10

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

于 2010-02-17T20:04:11.917 回答
0

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

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

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

HTH。

于 2010-02-17T19:44:03.423 回答
0

您也可以使用RowDataBound事件,GridView或者您可以按照@Brian 的描述在标记中选择

于 2010-02-17T19:54:16.030 回答