首页 新闻 会员 周边

大佬们 DevExpress GridView如何使用通配符% 过滤

0
[已解决问题] 解决于 2018-08-07 13:50

文本列应自动使用“Begins with”条件进行过滤。
因此,如果我们在自动过滤行中输入“水”,我们应该在该列默认情况下在搜索结果中获得“水0.5”,“水分”但不是“0.56水”。
文本列还必须支持通配符“%”

因此,如果我们在自动过滤器行中输入“%水”,并且我们应该在该列中查找“水0.5”,“水分”和“0.56水”。

各位大佬如果有解决方案尽管与我联系,谢谢

刘土豆的主页 刘土豆 | 菜鸟二级 | 园豆:204
提问于:2018-05-11 10:28
< >
分享
最佳答案
0

DevExpress 的Grid有两种通配方式,一种是StartWith,另外一种是Contains,都不需要你加通配符。

如果你想用自己加通配符的,反而麻烦了。比如你可以自己搞个文本框,检测一下用户的想法,然后去除通配符再告诉GridControl,这就叫曲线救国。

奖励园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2018-05-11 12:16

大佬好, 我本来用的就是Contains,如何转成StartWith呀?

刘土豆 | 园豆:204 (菜鸟二级) | 2018-05-11 13:36
其他回答(1)
0

gridView1.SubstituteFilter += GridView1_SubstituteFilter;

public void GridView1_SubstituteFilter(object sender, DevExpress.Data.SubstituteFilterEventArgs e)
        {
            if (e.Filter is FunctionOperator functionOperator)
            {
                foreach (var operand in functionOperator.Operands)
                {
                    if (operand is OperandValue val)
                    {
                        if (val.Value.ToString()[0] == '%')
                        {
                            var newOperator = new FunctionOperator(FunctionOperatorType.Contains,
                                new CriteriaOperator[]{
                                    functionOperator.Operands[0],
                                    new OperandValue(val.Value.ToString().Substring(2))
                                });
                            e.Filter = newOperator;
                        }
                    }
                }
            }
        }

刘土豆 | 园豆:204 (菜鸟二级) | 2018-08-07 13:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册