GTK#:带有过滤和排序的树视图

Posted

技术标签:

【中文标题】GTK#:带有过滤和排序的树视图【英文标题】:GTK#: Tree View with Filter AND Sorting 【发布时间】:2019-04-09 01:45:03 【问题描述】:

我有一个可以通过TreeModelFilter 过滤的树视图对象。 只要我用tree.Model = filter; 设置过滤器, 排序不再起作用。

有没有办法让过滤器工作并能够通过单击列标题进行排序?

总之,我想要一个filterable, searchable, sortable, multi-selection Tree View Control 来查看数据库中的结果。

【问题讨论】:

【参考方案1】:

在阅读 Gtk+ 文档之后,似乎树视图可以同时是 filtered 和 sortable。

但是您将无法使用这些类中的任何一个。我敢打赌,您必须创建自己的模型来实现 sorting 的接口并提供过滤。

Gtk# 非常强大。不幸的是,它同时也非常复杂。

【讨论】:

【参考方案2】:

要对可过滤模型进行排序,您需要用 Gtk.TreeModelSort 包装您的过滤模型。

    sorted_model = Gtk.TreeModelSort(model=self.filter)

如果不想使用默认的排序方式,可以设置自定义排序功能。

    sorted_model.set_sort_func(0, self.sort_tree, None)

稍后您可以将树视图设置为使用这种排序模型。

    self.tree_view = Gtk.TreeView(model=sorted_model)

【讨论】:

以上是关于GTK#:带有过滤和排序的树视图的主要内容,如果未能解决你的问题,请参考以下文章

带有分页、排序和过滤的 WebAPI Get 方法

csharp 部分视图+过滤/排序和过滤选择标签

设置带有过滤器和排序的 HTML 表格

使用带有数据数组的 Yii2 和带有排序和过滤的 Gridview

如何在带有自定义过滤器的 Spring Data mongodb 中使用分页和排序?

Drupal:使用视图快速搜索模块进行复杂过滤/排序