Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在标记中设置DropDownList选定项?_Asp.net_Data Binding_Drop Down Menu_Listitem - Fatal编程技术网

Asp.net 如何在标记中设置DropDownList选定项?

Asp.net 如何在标记中设置DropDownList选定项?,asp.net,data-binding,drop-down-menu,listitem,Asp.net,Data Binding,Drop Down Menu,Listitem,我在GridView控件的模板列中有一个DropDownList。GridView绑定到对象列表。每个对象都有一个int类型的属性,该属性对应于DropDownList列表项之一中的一个值。我可以通过在下拉列表中添加数据绑定事件来编程设置所选项目,但我想知道是否有办法通过在aspx标记中使用代码块来设置所选项目。您可以通过以下方式在标记中设置它: <ItemTemplate> <asp:DropDown .. SelectedValue='<%# Eval("Key")

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

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

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

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


HTH.

您也可以使用
GridView
RowDataBound事件,或者您可以按照@Brian

所述在标记中进行选择。在这种设计中要小心。以这种方式创建网格下拉列表意味着,对于下拉列表中的每个选项,您将对每一行重复。如果您有多个行或多个下拉列,这会很快增加到超过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();
}

公共字符串myFunction(int键){
return key.ToString();
}
作为为每行生成相同重复HTML的替代方法,您可以使这些下拉列表自动完成,或者创建一个只呈现HTML一次的隐藏下拉列表,然后使用JQuery或JavaScript填充所有网格下拉列表客户端