多“列”DataGridView C#

时间:2010-04-05 17:25:30

标签: .net winforms datagridview

我有一个绑定到DataSet的DataGridView。它有DateCreated,Weight,DateUsed列。这三列不占用几乎全屏的DataGridView上的水平空间。如果视图足够宽以支持第二组这些列,是否可以将这些列回绕到顶部。因此,在标题中,它将显示DateCreated,Weight,DateUsed,DateCreated,Weight,DateUsed。然后,当单击一行时,只会突出显示3个单元格,而不是全部六个单元格。有什么东西可以提供这种功能吗?

4 个答案:

答案 0 :(得分:2)

我不知道开箱即用的东西。

你可以自己创造这种效果。您需要将实际数据与数据表示分离。您需要将它们合并在一起以显示单行上的多行,而不是每个网格行使用一个DataRow。

因此,您的帮助方法可能会执行以下操作:

  • 将DataGridView的宽度与行数进行比较
  • 确定可见的DataRows列数
  • 使用额外的列集构建新的DataTable以表示每列
    • 示例:DateCreated1,Weight1,DateUsed1,DateCreated2,Weight2,DateUsed2等
  • 使用原始DataSet填充DataTable
  • 将DataGridView绑定到新表

一些注意事项:用户可以对数据进行排序吗?如果是这样,你必须自己写。

您是否需要能够使用此视图添加新行?这种观点听起来很难。

答案 1 :(得分:1)

我意识到你在4月份发布了这个问题,所以你可能已经找到了解决方案,或者转移到其他方面。但是,我最近写了一个基本上就是你所描述的控件,你可以从BitBucket免费下载:

https://bitbucket.org/dtao/taocontrols/downloads

Screenshot of SplitDataGridView control

如果您有兴趣,请给SplitDataGridView控件注意一下,让我知道您的想法。

答案 2 :(得分:0)

很难理解你的意思,但我确信它可以用一些JS功能完成,你可以计算浏览器/屏幕的列宽和宽度,并相应地调整DataGridView。您可以在设置“td”单元格宽度时遇到一些问题,因此更改为CSS提供程序并将其渲染为div和span可能是一种选择。

答案 3 :(得分:0)

可能是俗气但只是并排放置两个DGV,关闭左DGV的垂直滚动条,用一半数据绑定每个DGV,并使用正确的DGV滚动条控制它们。

除此之外,我认为你需要一些编码才能让一个DGV做你想做的事。