2010-02-22 42 views
1

是否可以使用原始類型集合(如List<long>)作爲DataGridView的數據源?作爲.NET的DataGridView中的數據源的原始類型集合?

經過半途而廢的嘗試使其工作,我給了並創建了一個簡單的結構,所以我可以給DataGridViewColumn一個PropertyName。但現在,我必須在處理UI時將我的值框起來,爲我的應用程序的剩餘部分解除它們(從而否定數據綁定的好處),並在結構中實現IComparable和IEquatable以支持List排序和搜索(簡單足夠的任務,結構本身的存在足夠混亂)。

這似乎是一個很大的開銷和混亂,只是爲UI小部件給出一個值列表。當然有一個更簡單的方法...

回答

1

如果你有一個數字列表,你想要顯示給用戶考慮使用ComboBox。這樣,您可以將DataSource設置爲List<long>

但是,如果你真的需要DataGridView你可以改變你List<long>List<Long?>,你現在可以在網格視圖的列綁定到界列表的Value財產。這種方法爲您節省了自定義結構,但它仍然是一個妥協解決方案。

+0

謝謝,列表應該沒問題。我不知道可空類型。 – PunctuallyChallenged 2010-02-22 20:59:05

+0

值得注意的是,可爲空的類型的'Value'屬性是隻讀的,因此無法使用此解決方法編輯'DataGridView'單元格。 – PunctuallyChallenged 2010-02-23 18:45:58

1

@João的解決方案很好,如果你能控制你的代碼。

如果你不控制列表進來,你可以把它包裝在一個linq表達式中以獲得一個命名實體綁定。

List<int> list = new List<int> {1, 1, 1}; 
var q = from item in list select new { bindingname = item }; 
dataGridView1.DataSource = q.ToList(); 
+0

有趣,謝謝。 – PunctuallyChallenged 2010-02-22 21:09:42