繁体   English   中英

如何最小化DataGridView中的一组行,使其占用更少的空间?

[英]How to minimize a group of rows in a DataGridView so they take up less space?

我的DataGridView有一个问题,那就是有很多重复的数据或非常相似的数据,一旦开始有数百行,它就会变得很笨拙。

我到处寻找一些允许分组的自定义控件,但是我发现这些控件要么花钱,要么陈旧,过于复杂,以至于不能为此切换,或者不能与我现有的代码库(不兼容的类型等)一起使用。

最好我可以使用常规的DataGridView做到这一点。 我想有一个菜单项按钮,单击该按钮后,它会将选定的行并将其变成一行(同时保留数据并提供某种行压缩的视觉提示)。 再次单击该行将被还原。

有人知道实现此目标的优雅方法吗? 我想我可以有一个DataGridViewRow集合的List ,以及一些保存相应索引或类似内容的方法,但是我想知道是否有更好的方法可以做到这一点。

由于您不想使用第三方控件或自定义控件,因此穷人的解决方案很简单。

假设您的数据如下所示:

public class CustomData
{
    public int Id { get; set; }
    public string Type { get; set; }
    public string Name { get; set; }
}

您可能会向用户显示的内容如下:

List<CustomData> data = new List<CustomData>()
                                        {
                                            new CustomData { Id = 1, Name = "Test", Type = "Group1"},
                                            new CustomData { Id = 2, Name = "Test", Type = "Group1"},
                                            new CustomData { Id = 3, Name = "Test", Type = "Group1"},
                                            new CustomData { Id = 4, Name = "Test", Type = "Group2"},
                                            new CustomData { Id = 5, Name = "Test", Type = "Group2"},
                                            new CustomData { Id = 6, Name = "Test", Type = "Group2"},
                                            new CustomData { Id = 7, Name = "Test", Type = "Group3"},
                                            new CustomData { Id = 8, Name = "Test", Type = "Group3"},
                                            new CustomData { Id = 9, Name = "Test", Type = "Group3"},
                                        };
var dataDisplayedToUser = data.GroupBy(g => g.Type).Select(p => p.Key);

在这种情况下将是:

Group1
Group2
Group3

当用户想要双击网格中的一行时,可以为他们提供另一个带有以下数据子集的模态数据网格。

string dataValue = theGroupTheUserSelected // from your grid
var specificData = data.Where(f => f.Type == theGroupTheUserSelected);

最终,向用户显示的数据更少了,这在眼睛上更容易理解。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM