ObjectListView 高级搜索和过滤
ObjectListView advanced search and filtering
我正在尝试在 ObjectListView 组件的 TreeListView object 上搜索和过滤结果。目前,我正在将其实现到具有以下 类
的 C# (.NET 4.0) 项目中
MyAbstract、MyDir(继承 MyAbstract)和 MyFile(也继承 MyAbstract)。这些 类 具有以下属性:名称、标题、速度、速度类型。
我想知道如何正确地为这个列表创建一个 query-like 过滤器,例如:
Speed < 10 OR SpeedType == "RPM"
我可能会对它使用 LINQ,但我的主要问题是如何使用 TreeListView 应用和管理它。我的主要问题是:
如何在 TreeListView 上创建这种过滤?
如何让TreeListView只显示过滤后的结果
如何让它在保存原列表的时候有一个清除筛选按钮。
这是我目前设置列表的方式:
public void Init()
{
Project.LoadDirectory();
treeListView1.SetObjects(new object[] { Project.Root });
treeListView1.CanExpandGetter = delegate(object x)
{
return (x is MyDir);
};
treeListView1.ChildrenGetter = delegate(object x)
{
return ((MyDir)x).Nodes;
};
olvColumn1.ImageGetter = new ImageGetterDelegate(this.TreeViewImageGetter);
}
我看过了the documentation,但我还是不清楚。
你试过什么?
这将过滤 TreeListView
以仅显示 MyFile
符合您在问题中给出的条件的对象:
this.treeListView.ModelFilter = new ModelFilter(delegate(object x) {
var myFile = x as MyFile;
return x != null && (myFile.Speed < 10 || myFile.SpeedType == "RPM");
});
要停止过滤,只需再次清除文件:
this.treeListView.ModelFilter = null;
项目附带的演示显示了所有这些行为。
我正在尝试在 ObjectListView 组件的 TreeListView object 上搜索和过滤结果。目前,我正在将其实现到具有以下 类
的 C# (.NET 4.0) 项目中MyAbstract、MyDir(继承 MyAbstract)和 MyFile(也继承 MyAbstract)。这些 类 具有以下属性:名称、标题、速度、速度类型。
我想知道如何正确地为这个列表创建一个 query-like 过滤器,例如:
Speed < 10 OR SpeedType == "RPM"
我可能会对它使用 LINQ,但我的主要问题是如何使用 TreeListView 应用和管理它。我的主要问题是:
如何在 TreeListView 上创建这种过滤?
如何让TreeListView只显示过滤后的结果
如何让它在保存原列表的时候有一个清除筛选按钮。
这是我目前设置列表的方式:
public void Init()
{
Project.LoadDirectory();
treeListView1.SetObjects(new object[] { Project.Root });
treeListView1.CanExpandGetter = delegate(object x)
{
return (x is MyDir);
};
treeListView1.ChildrenGetter = delegate(object x)
{
return ((MyDir)x).Nodes;
};
olvColumn1.ImageGetter = new ImageGetterDelegate(this.TreeViewImageGetter);
}
我看过了the documentation,但我还是不清楚。
你试过什么?
这将过滤 TreeListView
以仅显示 MyFile
符合您在问题中给出的条件的对象:
this.treeListView.ModelFilter = new ModelFilter(delegate(object x) {
var myFile = x as MyFile;
return x != null && (myFile.Speed < 10 || myFile.SpeedType == "RPM");
});
要停止过滤,只需再次清除文件:
this.treeListView.ModelFilter = null;
项目附带的演示显示了所有这些行为。