2010-01-06 70 views
1

我正在尋找一種高效的方式將數據保存到類似C#結構的表中。運行時確定每列的行數,列數和數據類型。我的方法之一是創建一個定義列的結構。該結構由ColumnName,Units和一個雙精度列表組成。 (現在我堅持一種數據類型)。然後,我爲每列實例化一個結構並填充它的列表。這種方法工作得很好,比我們嘗試過的其他方法更清潔,我可以在大約12毫秒內節省100,000行3列。 我遇到的問題是顯示數據。我能夠在datagridview中顯示我的「表」,方法是循環訪問我的列和行,然後逐個填充DGV單元格,但這並不令人驚訝,非常慢。 有沒有辦法將我的3個列表用作DGV的數據源?每列可以有它自己的數據源嗎?是我應該嘗試的DataGridView的替代方法嗎?如何使用多個List <>作爲DatagridView的數據源

+0

(重新發表您的評論,我爲'ITypedList'添加了一個示例,以便您可以感受它) – 2010-01-06 19:19:22

回答

1

什麼是「3列表」在這裏?我可以看到雙打名單...如果columes是動態的,那麼實施ITypedList可能是有用的,但我會誠實 - 這是一隻豬正確實施;填寫DataTable會更容易。例如,我已經使用它來即時轉置數組。

如果性能是您的問題,也許切換到virtual mode?這似乎很符合你的用例。

+0

3個列表中的每一個都代表一列。我的測試應用程序包含供用戶輸入行數和列數的文本框,我一般使用3 X 100,000。真實世界可能更像8 x 1,000,000。 我的第一次嘗試是直接將數據寫入DataTable,但是對於大量行,性能並不理想。 將我的列表內容複製到DataTable並將其用作DGV數據源比逐個單元格更快,但可能會出現其他一些challanges。 我將不得不調查ITypedList和VirtualMode。 – 2010-01-06 17:12:52

+0

我的第一選擇是虛擬模式。如果你想的話,我有一些'ITypedList'的例子。 – 2010-01-06 19:11:27

+0

例如,http://groups.google.com/group/microsoft.public.dotnet.languages.csharp/browse_thread/thread/ae1251a6855b9254/f5599f934a2f7043 – 2010-01-06 19:13:23

1

您是否嘗試先填充DataTable,然後將該DataTable綁定到DataGridView?

如果這是一個WebApplication,你可以做一個foreach語句並從代碼隱藏的表中建立一個表。

+0

請參閱上面的註釋re:DataTable – 2010-01-06 17:21:38

相關問題