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

5

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

3个回答

10

在这种设计中要小心。按照这种方式创建网格下拉框意味着对于每个下拉框选项,您将重复为每一行进行设置。如果有多个行或多个下拉列,这很快就会导致页面大小超过1MB,降低性能。

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

<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在客户端填充所有网格下拉列表。


0

你可以通过标记设置它:

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

根据绑定方式,您是否使用数据源控件?无论如何,我注意到这种方法可能会尝试在项绑定之前设置值,这可能会引发异常。不确定,曾经遇到过一次,认为可能是这个问题,但应该更深入地研究一下。

希望对您有所帮助。


0

你也可以使用 GridViewRowDataBound 事件,或者像 @Brian 所描述的那样在标记中进行选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接