2008-12-16 50 views
0

我已經使用LINQ拋出自己頭扎到C#和.NET 2.0,和我有調試的一些問題,也就是以下幾個問題:數據源,使組合框失敗

我有一個ComboBox控件(cmbObjects)我想用一組使用Linq檢索的對象進行填充。我寫了一個輔助方法來填充List<T>通用:

class ObjectProvider 
{ 

    public static List<T> Get<T>(bool includeNull) where T : class, new() 
    { 
     List<T> list = new List<T>(); 
     LutkeDataClassesDataContext db = ConnectionManager.GetConnection(); 
     IQueryable<T> objects = db.GetTable<T>().AsQueryable(); 

     if (includeNull) list.Add(null); 

     foreach (T o in objects) list.Add(o); 

     return list; 
    } 

    public static List<T> Get<T>() where T : class, new() 
    { 
     return Get<T>(false); 
    } 
} 

調用帶有真或假的函數,當我驗證了結果 - 在List確實包含正確的價值觀,傳遞true時,它包含null作爲第一個值,其次是其他對象。

當我分配DataSource至然而ComboBox,控制簡單地拒絕顯示任何項目,包括null值(未選擇):

cmbObjects.DataSource = ObjectProvider.Get<Car>(true); 

傳遞false(或沒有參數)不工作 - 它顯示所有的對象。

有沒有辦法讓我爲第一個對象指定一個「null」值而不訴諸幻數對象(就像在DB中有一個僞造的條目來指定一個N/A值)?可以爲空的東西是理想的,但我有點失落。

此外,我已經嘗試將new T()而不是null添加到列表中,但只導致OutOfMemoryException

+0

此外,我試過將`List`聲明爲`List >`,但編譯器不允許我這樣做。 – 2008-12-16 09:49:16

+0

將一個Null值添加到列表中的意圖是什麼?這個列表的Combobox應該顯示爲單個項目的元素? – Gishu 2008-12-16 09:56:54

回答

0

好吧,如果您嘗試添加null值,那麼DataSource似乎無效。解決方案是通過簡單的foreach循環添加項目,並在開始時使用空字符串,而不是分配List<>

1

組合框控件可以選擇將數據綁定項追加到列表中的硬編碼項目。所以你硬編碼你的n/a值,並且數據綁定真實的值。