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