2010-01-06 41 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

相关问题