2011-10-14 48 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设置为代码。所以是的,我做到了。 –

相关问题