【问题标题】:How to use multiple List<> as DatagridView's datasource如何使用多个 List<> 作为 DatagridView 的数据源
【发布时间】:2011-01-02 02:01:26
【问题描述】:

我正在寻找一种高效的方法来将数据保存到 C# 中的类似结构的表中。每列的行数、列数和数据类型在运行时确定。我的一种方法是创建一个定义列的结构。该结构由 ColumnName、Units 和一个通用的双精度列表组成。 (现在我坚持一种数据类型)。然后我为每一列实例化一个结构并填充它的列表。这种方法效果很好,并且比我们尝试过的其他一些方法更干净,我能够在大约 12 毫秒内保存 100,000 行 3 列。 我遇到的问题是显示数据。我可以通过循环遍历列和行并逐个单元格填充 DGV 单元格来在 datagridview 中显示我的“表格”,但这并不奇怪,非常慢。 有没有办法将我的 3 个列表用作 DGV 的数据源?每列可以有自己的数据源吗?是我应该尝试的 DataGridView 的替代品吗?

【问题讨论】:

  • (请回复您的评论,我为ITypedList 添加了一个示例,以便您感受一下)

标签: c# list datagridview datasource


【解决方案1】:

这里的“3 个列表”是什么?我可以看到双打列表...如果列是动态的,那么实现ITypedList 可能会有用,但我会说实话 - 正确实现它是一头猪;填写DataTable 会更容易。例如,我使用它来动态转置数组。

如果您关心性能,也许切换到virtual mode?这似乎与您的用例非常匹配。

【讨论】:

  • 3 个列表中的每一个都代表一列。我的测试应用程序包含一个文本框,供用户输入行数和列数,我通常使用 3 X 100,000。现实世界可能更像是 8 x 1,000,000。我的第一次尝试是简单地将数据直接写入 DataTable,但对于大量行,性能并不好。将我的列表内容复制到 DataTable 并将其用作 DGV 数据源比逐个单元格地进行操作要快,但可能会带来一些其他挑战。我将不得不调查 ITypedList 和 VirtualMode。
  • 我的第一选择是虚拟模式。如果您愿意,我在 usenet 上有一些 ITypedList 示例。
【解决方案2】:

您是否尝试过先填充 DataTable,然后将该 DataTable 绑定到 DataGridView?

如果它是一个 WebApplication,您可以执行一个 foreach 语句并从代码隐藏构建一个表。

【讨论】:

  • 参见上面的评论:DataTable
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 2018-12-10
  • 1970-01-01
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多