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 を設定していないため、論理的にはこの例外が発生します。質問は、(Department の) 選択したオブジェクト全体を FormViews データソースにデータバインドしたい場合、DataValueField の値は何でなければなりませんか?

ありがとう。

4

2 に答える 2

1

オブジェクト全体を としてバインドできるかどうかはわかりませんSelectedValue
あなたができることは、一意の識別子(IDなど)をにバインドし、そのIDDataValueFieldでオブジェクトを取得することです。
もう 1 つの (非常に汚い) 解決策は、関連するすべてのプロパティ (たとえば " ; " で区切られた) を に配置しDataValueField、これらの値を使用してオブジェクトを構築することです... しかし、前述のように、それは本当に汚いです! ;-)

于 2010-02-15T13:25:13.687 に答える
0

オブジェクトを DataValueField に割り当てることは可能ですが、オブジェクトが文字列にキャストされるため、「機能」しません。これは、バインドされたすべてのオプションに対して同じ文字列値を持つことになることを意味します。値は、オブジェクトのタイプまたは単にオブジェクトである可能性があります。アプローチは、関連するオブジェクトのプロパティを文字で区切る Pieter Nijs によって述べられたものかもしれませんが、彼が言ったように、これは非常に汚いです。

于 2010-02-15T13:31:09.467 に答える