[英]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.