2010-10-29 57 views
0

的DataTextField屬性我有這樣定義的狀態類:綁定詞典(整數,字符串)到一個DropDownList

Public Class State 
    Public Property StateId As Integer 
    Public Property Name As Dictionary(Of Integer, String) 
End Class 

名稱(X)包含不同語言的國家名稱。

我從方法StateManager.GetAllStates() 獲得狀態的集合,我想將此集合綁定到DropDownList。問題是, 我找不到如何設置DataTextField屬性讓我們說stateList.Name(1) 這是我的國家的英文名稱。

Dim stateList As StateCollection = StateManager.GetAllStates() 

Me.DataSource = stateList 
Me.DataValueField = "StateId" 
Me.DataTextField = "Name(1).Value" <-- Problem here 
Me.DataBind() 

任何人都有想法嗎?

感謝

回答

3

當您使用的數據源,則不能使用複雜的表達式來指定值。

創建,你extact您需要的值來源:

Me.DataSource = stateList.Select(_ 
    Function(s as State) New With { .Id = s.StateId, .Name = s.Name(1) } _ 
); 
Me.DataValueField = "Id" 
Me.DataTextField = "Name" 
+0

完美地工作。非常感謝你! – Jason 2010-10-29 20:05:38

0

,而不是 「名稱(1).value的」,你有沒有嘗試過:

Me.DataTextField = name(1).ToString 
+0

同樣的問題,數據綁定:「國家」不包含名爲「名稱(1)」的屬性。 – Jason 2010-10-29 19:53:59

+0

也許將該屬性轉換爲本地Dictionary變量,然後將其拉下? Dim myNameDictionary = State.Name Me.DataTextField = myNameDictionary(1).ToString – ewitkows 2010-10-29 19:55:27

+0

請注意,DataTextField是一個字符串,用於命名從數據源使用的屬性,而不是值本身。 – Guffa 2010-10-29 20:03:19

相關問題