2

目前,我在 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 的值必须是多少?

谢谢。

4

2 回答 2

1

我不知道是否可以将整个对象绑定为SelectedValue.
您可以做的是将唯一标识符(例如 ID)绑定到DataValueField并通过它的 ID 检索您的对象。
另一个(非常脏的)解决方案是将所有相关属性(由例如“;”分隔)中DataValueField,并使用这些值构造您的对象......但是,如上所述,这真的很脏!;-)

于 2010-02-15T13:25:13.687 回答
0

可以将对象分配给 DataValueField 但它不会“工作”,因为您的对象将被强制转换为字符串。这意味着您将为所有绑定选项拥有相同的字符串值,该值可能是您的对象的类型或只是对象。一种方法可能是 Pieter Nijs 所说的,用一个字符分隔相关的对象属性,但就像他说的那样,这很脏。

于 2010-02-15T13:31:09.467 回答