我知道有很多类似的问题,我花了很多时间研究可能的解决方案。但我仍然不确定最简单的方法是什么。
目标是在LogItems
中显示DataGridView
(时间戳,严重性级别,消息),并按时间戳排序,并允许用户按严重性级别过滤项目。
这正是我(不)需要的:
DataGridView
与列表/对象集合的单向数据绑定。无需通过DataGridView
编辑对象,也无需用户通过DataGridView
添加/删除对象。但是当我向对象列表/集合添加或删除对象时,DataGridView
应该会自动更新。DateTime
),并且应按此时间戳排序显示。我不关心列表本身是否对它们进行排序(类似SortedList<T>
会很好,但它不存在)或者DataGridView
或BindingSource
是否负责排序。用户无需通过单击列标题来设置排序。我提出了一些方法:
BindingList<T>
作为基础集合不起作用,因为它不支持排序和过滤。BindingSource
包装某些集合无济于事。IBindingListView
的自定义集合。这看起来很复杂,我只需要IBindingListView
提供的功能的一部分。而且我太懒了。BindingListView
sourceforge project。这可能对我需要的东西太重了,如果我不需要,我不想依赖第三方库。什么是一个简单而快速的解决方案?
答案 0 :(得分:1)
我建议使用DataTable。你将获得所需的一切。
只需创建DataGridView ReadOnly即可阻止用户编辑。当基础DataTable更新时,它仍会更新。
干杯
答案 1 :(得分:0)
使用DataTable
是一种选择,但最后我决定使用sourceforge中的BindingListView
代替,我对它非常满意。
DataTable
方法存在的问题是需要将自定义对象中的所有数据复制到DataTable
中才能显示。