如何绑定 DropDownList 的选定值
Posted
技术标签:
【中文标题】如何绑定 DropDownList 的选定值【英文标题】:How to bind the selected value of a DropDownList 【发布时间】:2010-10-10 21:22:36 【问题描述】:数据绑定都是关于声明性代码的,对吧?所以我用属性指定我想要的东西,其余的由框架处理。除非我弄错了,数据绑定与 S&M 有关,对吧?
那么,为什么 DropDownList 控件只为其数据源(即列表源)提供绑定字段,而不为其实际数据字段提供绑定字段。即如何将我的名字 DropDownList 的选定值绑定到我的 Person 记录中的 Name 字段?这是微软的严重疏忽,还是我的疏忽?
如果我仍然需要手动设置和读取选定的值,那么双向数据绑定有什么意义?
【问题讨论】:
【参考方案1】:我不知道它是否真的对您有帮助,但是您是否尝试在 Code behind 上设置“SelectedValue”?
例子:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
DropDownInfoSource.SelectedValue = "1" ' your value, here
End Sub
【讨论】:
最终选择的值将被选择一个或另一个选择改变......所以每次加载时都需要改变它的实际值,而不是初始值.....【参考方案2】:您可能想要执行以下代码。 您不能以声明方式设置“SelectedValue”,而是通过说 "SelectedValue= 您实际上是在控件绑定数据时设置值。
<asp:DropDownList
ID="DropDownInfoSource"
runat="server"
DataSourceID="_employeeDataSource"
DataTextField="EmployeeName"
DataValueField="EmployeeID"
SelectedValue='<%# Bind("EmployeeID") %>'
/>
【讨论】:
谢谢,我有点跑题了:我只是在 Intellisense 中查找了一个 Value 属性,但没有显示,所以我没有进一步看就问了。我们在 cmets 中需要一个尴尬的表情。 我在 .NET 4 中收到一条错误消息:“必须将对 Bind 的调用分配给模板内控件的属性”,即使该控件位于 GridView 的 ItemTemplate 中。将 Bind 更改为 Eval 对我有用。 @Andrew - 我的在编辑模板字段中,我使用的是 asp.NET 4.0。我尝试使用 EVAL 而不是 Bind,但它仍然不起作用。有什么想法吗? 这个想法是不要把双引号中的Bind表达式“”放在单引号中'' @AndrewShepherd:很抱歉把这个从时间深处拖了回来,但你知道是否有任何具体原因导致该设置没有出现在智能感知中吗?【参考方案3】:您可以在其中定义数据源、数据文本字段(列表中显示的内容)和数据值字段。
示例(我有一个包含“EmployeeID”列和“EmployeeName”列的数据表):
dropdownlist1.datasource = DT
dropdownlist1.datatextfield = "EmployeeName"
dropdownlist1.datavaluefield = "EmployeeID"
dropdownlist1.databind()
【讨论】:
如果您阅读我的问题,您会发现我知道这些。正如我所问的,我想知道如何将选定的值绑定到另一个数据源。 你知道没关系。如果您的问题应该对其他人有益,也许它应该包括各种解决方案。以上是关于如何绑定 DropDownList 的选定值的主要内容,如果未能解决你的问题,请参考以下文章
如何将多个 Html.DropDownList 选定值从 View(.aspx) 传递给 MVC 控制器的操作?
在 GridView 中设置 DropDownList 的选定值