0

我知道有很多类似的问题,我花了很多时间寻找可能的解决方案。但我仍然不确定最简单的方法是什么。

目标是按时间戳排序显示LogItems(时间戳、严重级别、消息),DataGridView并允许用户按严重级别过滤项目。

这正是我(不需要)需要的:

  • DataGridViewa到对象列表/集合的单向数据绑定。无需用户通过编辑对象DataGridView或添加/删除对象DataGridView。但是DataGridView当我向该基础列表/集合添加或删除对象时,应该会自动更新。
  • 对象有一个时间戳 ( DateTime),并应按此时间戳排序。我不在乎列表本身是否使它们保持排序(这样SortedList<T>会很好,但它不存在),或者是否由DataGridViewor aBindingSource负责排序。用户无需通过单击列标题来设置排序。
  • 基于单个列的值(严重性)的简单过滤。

这里我想出了一些方法:

  • 使用 aBindingList<T>作为基础集合不起作用,因为它不支持排序和过滤。
  • BindingSource如果基础集合不支持排序和过滤,则用 a 包装一些集合将无济于事。
  • 编写一个实现IBindingListView. 这看起来很复杂,我只需要IBindingListView提供的功能的一个子集。而且我太懒了。
  • 使用BindingListView sourceforge 项目。这对于我需要的东西来说可能太重了,如果我不需要的话,我不想依赖第三方库。

什么是一个简单而快速的解决方案?

4

2 回答 2

1

我建议使用数据表。你会得到你需要的一切。

只需将 DataGridView 设为只读以防止用户编辑。当基础 DataTable 更新时,它仍然会更新。

干杯

于 2013-09-19T21:18:33.527 回答
0

使用 aDataTable是一种选择,但最后我决定改用BindingListViewfrom sourceforge,我对此非常满意。

DataTable方法的问题在于,它需要将我的自定义对象中的所有数据复制到DataTable仅用于显示的对象中。

于 2013-10-02T05:43:47.143 回答