2010-02-15 89 views
2

目前我在FormView中有一個DropDownList,將數據綁定到ObjectDataSource。這是DropDownList的,它有它自己的數據源,它返回部門列表:將ASP.net DropDownList的選定值綁定到自定義對象

<asp:DropDownList ID="DepartmentsList" DataSourceID="DepartmentsListDataSource" DataTextField="Name" SelectedValue='<%# Bind("Department") %>' runat="server" /> 

FormView控件的數據源,物業部被定義爲:

public Department Department { get; set; } 

在這種情況下,我得到這個例外:

'DepartmentsList'有一個SelectedValue,它是無效的,因爲它不存在於項目列表中。 參數名稱:值

邏輯上我得到這個異常,因爲我沒有在DropDownList上設置DataValueField。問題是,如果我想將整個選定的對象(部門)數據綁定回FormViews數據源,那麼DataValueField的價值是什麼?

謝謝。

回答

1

我不知道是否有可能將整個對象綁定爲SelectedValue
你可以做的是將一個唯一的標識符(例如ID)綁定到DataValueField並通過它的ID檢索你的對象。
其他(非常髒)解決方案是把所有相關的屬性(例如「;」分開)放在DataValueField中,並用這些值構造你的對象......但是,正如所說,這真的很髒! ;-)

+0

將ID評估爲SelectedValue並在Updating事件中以編程方式綁定值是最佳解決方案。謝謝。 –

0

可以將一個對象分配給DataValueField,但它不會「工作」,因爲它的對象將被轉換爲字符串。這意味着您將爲所有綁定選項使用相同的字符串值,該值可能是您的對象類型或簡單對象。一種方法可能是Pieter Nijs提到的一種方法,用一個角色來刻畫相關的對象屬性,但是像他說的那樣很髒。

相關問題