目前我在FormView中有一个DropDownList,数据绑定到ObjectDataSource。这是DropDownList,它有自己的数据源,返回一个部门列表:
<asp:DropDownList ID="DepartmentsList" DataSourceID="DepartmentsListDataSource" DataTextField="Name" SelectedValue='<%# Bind("Department") %>' runat="server" />
在FormView的数据源中,属性Department定义为:
public Department Department { get; set; }
在这种情况下,我得到了这个例外:
'DepartmentsList'有一个SelectedValue,它是无效的,因为它在项目列表中不存在。 参数名称:值
逻辑上我得到了这个异常,因为我没有在DropDownList上设置DataValueField。问题是,如果我想将完整的选定对象(部门)数据绑定回FormViews数据源,那么DataValueField的值必须是什么?
感谢。
答案 0 :(得分:1)
我不知道是否可以将整个对象绑定为SelectedValue
。
您可以做的是将唯一标识符(例如ID)绑定到DataValueField
,然后通过它的ID检索您的对象。
另一个(非常脏)解决方案是将所有相关属性(例如“;”分隔)放在DataValueField
中,并用这些值构造对象......但是,as as说,真的很脏! ; - )
答案 1 :(得分:0)
可以将一个对象分配给DataValueField但它不会“工作”,因为它将被转换为字符串。这意味着您将为所有绑定选项使用相同的字符串值,该值可能是对象的类型或简单对象。一种方法可能是Pieter Nijs所说的一种方法,用一个字符来区分相关的对象属性,但就像他说这很脏。