【发布时间】:2025-12-23 20:45:11
【问题描述】:
我知道有很多类似的问题,我花了很多时间寻找可能的解决方案。但我仍然不确定最简单的方法是什么。
目标是在DataGridView 中显示LogItems(时间戳、严重级别、消息),并按时间戳排序,并允许用户按严重级别过滤项目。
这正是我(不需要)需要的:
-
DataGridView到对象列表/集合的单向数据绑定。用户无需通过DataGridView编辑对象或通过DataGridView添加/删除对象。但是当我向底层列表/集合添加或删除对象时,DataGridView应该会自动更新。 - 对象有一个时间戳 (
DateTime),应该按这个时间戳排序。我不在乎列表本身是否使它们保持排序(类似SortedList<T>会很好,但它不存在)或者DataGridView或BindingSource是否负责排序。用户无需通过单击列标题来设置排序。 - 基于单列值的简单过滤(严重性)。
以下是我想出的一些方法:
- 使用
BindingList<T>,因为它不支持排序和过滤,因此底层集合不起作用。 - 如果基础集合不支持排序和过滤,则使用
BindingSource包装某些集合没有帮助。 - 编写实现
IBindingListView的自定义集合。这看起来很复杂,我只需要IBindingListView提供的功能的一个子集。而且我太懒了。 - 使用
BindingListViewsourceforge project。这对于我需要的东西来说可能太重了,如果我不需要的话,我不想依赖第三方库。
对此有什么简单快速的解决方案?
【问题讨论】:
标签: c# sorting data-binding datagridview filtering