Windows窗体显示大量数据但也可选择

时间:2012-10-05 17:51:37

标签: c# logging grep

我之前有一些关于如何从约600mbs的日志文本文件信息中读取大块数据的问题。以及搜索文件以查找有用信息

我想知道显示数据的最佳方式/有效方式是什么。以前,对于约1mb的日志文件数据,我使用列表框在文件中显示1个条目的字符串。这将为仅1mb的数据填充大约7000个列表框条目。显然我不能为~600mb日志文件执行此操作。

我希望用户能够“扩展”一个日志条目并“向下钻取”,并查看有关特定信息/调试/错误的更多详细信息。我认为因为listbox本质上是基于索引的数组,我需要使用不同的容器来显示信息,但仍然保持选择条目和扩展细节的能力。

3 个答案:

答案 0 :(得分:1)

一棵树是有意义的,你可以聪明地做延迟加载在后台线程中构建节点/索引,并选择节点作为后备。

同样的事情,但有一个基于过滤器的选择的多个列表框也是可能的

节点可以是MonthYear,Date,Hour,Entry等来源或类型,如果它在那里。

你想要的最后一件事是列表框,其中包含可供选择的条目,没有人愿意使用它,以及任何不得不厌恶它的人。

答案 1 :(得分:0)

对于600mb数据,大约7000 * 600(4.2M)行,您将无法在一个窗口中显示所有这些行。最好用一种方法来浏览不同的页面(比方说每页只有100行)。如果我是你,我将预处理日志文件,然后将日志插入数据库。然后使用pagenation从DB加载行。如果你这样做,你仍然可以使用listview或gridview。

答案 2 :(得分:0)

我会这样接近设计:

  1. 顶部的一组过滤器,通过分析日志文件的内容生成,并带有“立即搜索”按钮或某些此类内容。
  2. 在过滤器中,我会询问页面大小(如show 10,50,100每页结果)
  3. 底部的搜索结果窗口,其中包含与所选过滤条件匹配的每个日志节点的摘要数据列表,然后在必要时将结果分解为页面。
  4. 选择特定日志节点时可见的详细信息窗格
  5. 页脚状态栏,记录了匹配记录的数量
  6. 这将允许您的用户快速搜索他们正在寻找的内容,但不会被找到的结果的大小所淹没,并考虑到数据集的大小,他们可能希望在显示之前过滤它任何节点。