2011-10-14 53 views
0

我有一個返回作爲數據源的Ienumerable <KeyValuePair <T, string>>。如何?

IEnumerable<KeyValuePair<T, string>> 

的通用方法,但我期望噸至是整數。我如何將它綁定到一個asp.net web窗體應用程序中的組合框?

目前,當我將結果綁定到我的組合框時,我得到一個exepction。我的方法是將

public static IEnumerable<KeyValuePair<T, string>> GetData<T>(IEnumerable<global::Dev.DAL.pets> st, Func<global::Dev.DAL.pets, T> getData) 
    { 
     var filtered = st.Select(a => new { Id = getData(a), Code = Convert.ToInt32(getData(a)).ConvertToCode() }); 
     foreach(var v in filtered) 
      yield return new KeyValuePair<T, string>(v.Id, v.Code); 



    } 
+0

如果你期望'T'是一個整數,爲什麼不把它作爲一個整數而不是泛型? –

+0

優秀的問題,這是我目前正在做的。我正在學習使用泛型,這可能是我旅程中的一個混亂時刻。感謝您的評論。 –

+0

你能發佈正在拋出的異常嗎? – jdavies

回答

1

我假設您的標記(或代碼)不正確設置的DropDownList的DataTextField/DataValueField屬性。

嘗試將DataTextField設置爲"Value",將DataValueField設置爲"Key"

<asp:DropDownList ... DataTextField="Value" DataValueField="Key" ... 
+0

好吧,我實際上沒有在調用數據綁定後採取這個明確的步驟。這可以解釋錯誤嗎?在語句 –

+0

處拋出異常''不包含名爲'Code'的屬性,導致我相信您的DropDownList標記或代碼將DataTextField或DataValueField指定爲''Code''。數據綁定例程試圖在數據源中查找名爲'Code'的屬性,但它不存在並引發異常。 – jdavies

+0

是的,其實我在標記。我確實將DataTexField設置爲代碼。所以是的,我做到了。 –

相關問題