您的位置:首页 > 其它

DevExpress控件-TreeList+searchControl组合过滤实现(图文)

2016-05-04 14:39 2326 查看
以下效果TreeList必须先绑定数据源,绑定方法如下:

this.treeList1.KeyFieldName = "id";
this.treeList1.ParentFieldName = "parentId";
this.treeList1.DataSource = ds.Tables[0];

效果一:





实现代码如下:

/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmMain_Load(object sender, EventArgs e)
{
//指定行为客户端为treeList1
this.txt_search.Client = this.treeList1;
//定义TreeList过滤事件
treeList1.FilterNode += treeList1_FilterNode;
}
/// <summary>
/// 过滤事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeList1_FilterNode(object sender, DevExpress.XtraTreeList.FilterNodeEventArgs e)
{
if (treeList1.DataSource == null) return;
string NodeText = e.Node.GetDisplayText("name");//参数填写FieldName
if (string.IsNullOrWhiteSpace(NodeText)) return;
bool IsVisible = NodeText.ToUpper().IndexOf(txt_search.Text.ToUpper()) >= 0;
if (IsVisible)
{
DevExpress.XtraTreeList.Nodes.TreeListNode Node = e.Node.ParentNode;
while (Node != null)
{
if (!Node.Visible)
{
Node.Visible = true;
Node = Node.ParentNode;
}
else
break;
}
}
e.Node.Visible = IsVisible;
e.Handled = true;
}

效果二:





实现代码如下:

/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmMain_Load(object sender, EventArgs e)
{
//指定行为客户端为treeList1
this.txt_search.Client = this.treeList1;
//开启过滤功能
treeList1.OptionsBehavior.EnableFiltering = true;
//过滤模式,枚举1.Default 2.Extended(推荐) 3.Smart(推荐) 4.Standard
treeList1.OptionsFilter.FilterMode = FilterMode.Standard;
//定义TreeList过滤事件
treeList1.FilterNode += treeList1_FilterNode;
}
/// <summary>
/// 过滤事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeList1_FilterNode(object sender, DevExpress.XtraTreeList.FilterNodeEventArgs e)
{
if (treeList1.DataSource == null) return;
string NodeText = e.Node.GetDisplayText("name");//参数填写FieldName
if (string.IsNullOrWhiteSpace(NodeText)) return;
bool IsVisible = NodeText.ToUpper().IndexOf(txt_search.Text.ToUpper()) >= 0;
if (IsVisible)
{
DevExpress.XtraTreeList.Nodes.TreeListNode Node = e.Node.ParentNode;
while (Node != null)
{
if (!Node.Visible)
{
Node.Visible = true;
Node = Node.ParentNode;
}
else
break;
}
}
e.Node.Visible = IsVisible;
e.Handled = true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: