.net “多”;栏「;DataGridView C#

.net “多”;栏「;DataGridView C#,.net,winforms,datagridview,.net,Winforms,Datagridview,我有一个绑定到数据集的DataGridView。它有DateCreated、Weight、DateUsed列。在几乎全屏的DataGridView上,这三列不会占用太多水平空间。如果视图足够宽以支持第二组柱,是否可以将这些柱折回到顶部。因此,在标题中,它将读取DateCreated、Weight、DateUsed、DateCreated、Weight、DateUsed。然后,当单击一行时,只会高亮显示3个单元格,而不是全部6个单元格。有什么东西可以提供这种功能吗?很难理解您的确切意思,但我确信可

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

很难理解您的确切意思,但我确信可以通过某种JS功能来实现,您可以计算列的宽度和浏览器/屏幕的宽度,并相应地调整DataGridView。设置“td”单元格宽度时可能会遇到一些问题,因此可以选择更改为CSS提供程序并作为div和span进行渲染。

可能很俗气,但只需并排粘贴两个DGV,关闭左侧DGV的垂直滚动条,用一半的数据绑定每个DGV,然后用右侧DGV的滚动条控制它们


除此之外,我想你还需要一点编码来让一个DGV做你想做的事情。

我不知道有什么现成的

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

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

  • 将DataGridView的宽度与行数进行比较
  • 确定有多少DataRows列可见
  • 用额外的列集构建一个新的DataTable来表示每一列
    • 示例:DateCreated1、权重1、DateUsed1、DateCreated2、权重2、DateUsed2等
  • 使用原始数据集填充DataTable
  • 将DataGridView绑定到新表
一些注意事项:用户可以对数据进行排序吗?如果是这样,你就得自己写


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

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


如果您感兴趣,请尝试一下SplitDataGridView控件,让我知道您的想法。

这不是一个web应用程序,只是您标准的普通Windows窗体应用程序。不,用户不能排序、添加或删除行。谢谢你的意见。虽然不是我想要的,但这似乎是我必须走的路。