Devexpress Treelist 过滤的实现
来源:互联网 发布:淘宝达人 发财 编辑:程序博客网 时间:2024/05/22 05:06
Devexpress Treelist 的过滤行添加后,发现,只有父节点有这种信息,子节点才会显示。
可以毫不犹豫地说,这是一个bug.
但带来的影响还是很严重。
我用的版本是11.2
然后,到网上,找了一会。
果然许多老外也遇到这个问题。
其中,这几个链接:
http://www.devexpress.com/Support/Center/Question/Details/S139453
内容最多。
其中,有句:
TreeListOptionsFilter.FilterMode property to theFilterMode.Smart value
这个例子就是如此实现,http://www.devexpress.com/Support/Center/Question/Details/B212393
private void Form1_Load(object sender, EventArgs e) { treeList1.OptionsBehavior.EnableFiltering = true; treeList1.OptionsView.ShowAutoFilterRow = true; treeList1.OptionsFilter.FilterMode = FilterMode.Smart; CreateTreeList(); }
然而,同样是11.2,我所用的没有这个特性。
我看了13.2的,的确有这个特性:
所以,还是希望找到一个简单的办法,
http://www.devexpress.com/Support/Center/Example/Details/E3072
这个链接事实上是上面那个给出来的
原文如下:
private void Form1_Load(object sender, EventArgs e) { treeList1.DataSource = FillDataTable(); treeList1.ExpandAll(); } private void applyFilterButton_Click(object sender, EventArgs e) { FilterNodeOperation operation = new FilterNodeOperation(textEdit1.EditValue != null ? textEdit1.EditValue.ToString() : ""); treeList1.NodesIterator.DoOperation(operation); } class FilterNodeOperation : TreeListOperation { string pattern; public FilterNodeOperation(string _pattern) { pattern = _pattern; } public override void Execute(TreeListNode node) { if (NodeContainsPattern(node, pattern)) { node.Visible = true; if (node.ParentNode != null) node.ParentNode.Visible = true; } else node.Visible = false; } bool NodeContainsPattern(TreeListNode node, string pattern) { foreach (TreeListColumn col in node.TreeList.Columns) if (node.GetValue(col).ToString().Contains(pattern)) return true; return false; } }
我改了改:
private void treeList1_ColumnFilterChanged(object sender, EventArgs e) { //DevExpress.XtraTreeList.Nodes.TreeListNode fNode = treeList1.FocusedNode; //DevExpress.XtraTreeList.Columns.TreeListColumn fColumn = treeList1.FocusedColumn; if (treeList1.ActiveEditor != null) { string newKey = treeList1.ActiveEditor.EditValue.ToString(); FilterNodeOperation operation = new FilterNodeOperation((!System.String.IsNullOrEmpty(newKey))?newKey : ""); treeList1.NodesIterator.DoOperation(operation); } }
终于可以了。
对了,原始代码,有这几句话:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using DevExpress.XtraTreeList.Nodes.Operations;using DevExpress.XtraTreeList.Columns;using DevExpress.XtraTreeList.Nodes;
0 0
- Devexpress Treelist 过滤的实现
- DevExpress控件-TreeList+searchControl组合过滤实现(图文)
- DevExpress控件-TreeList内置过滤功能实现(图文)
- 使用DevExpress的TreeList控件的效果和实现代码
- DevExpress的TreeList的使用
- DevExpress的TreeList开发示例
- DevExpress--TreeList
- [Dev]DevExpress之treelist右键菜单实现
- 关于DevExpress.XtraTreeList.TreeList控件的使用——给TreeList添加RepositoryItem以实现文本编辑功能
- DEVEXPRESS-----TREELIST 的 增加、删除节点
- TreeList 的 增加、删除节点-----DevExpress
- TreeList 的 增加、删除节点-----DevExpress
- TreeList 的 增加、删除节点-----DevExpress
- DevExpress TreeList控件的复选框
- [DevExpress]TreeList控件的复选框
- DevExpress TreeList控件的复选框
- DevExpress TreeList控件的复选框
- 在DevExpress的treelist控件节点上实现右键弹出菜单项
- Android 多语言
- spring mongodb 更新Array中某个指定的document的field的value
- ZooKeeper的一个性能测试
- Spark扫盲
- CocoaPods安装和使用教程
- Devexpress Treelist 过滤的实现
- 有关C语言中有符号/无符号数混合运算的小问题
- Android自定义提示框
- Hdu 4951 Multiplication table
- opengl 绘制线框立方体
- H.264/AVC标准参考软件 JM
- ffmpeg+sdl2.0做一个简单的音频播放器
- 获取Android版本信息,方便代码中判断特殊处理
- JavaScript下载图片