文本列应自动使用“Begins with”条件进行过滤。
因此,如果我们在自动过滤行中输入“水”,我们应该在该列默认情况下在搜索结果中获得“水0.5”,“水分”但不是“0.56水”。
文本列还必须支持通配符“%”
因此,如果我们在自动过滤器行中输入“%水”,并且我们应该在该列中查找“水0.5”,“水分”和“0.56水”。
各位大佬如果有解决方案尽管与我联系,谢谢
DevExpress 的Grid有两种通配方式,一种是StartWith,另外一种是Contains,都不需要你加通配符。
如果你想用自己加通配符的,反而麻烦了。比如你可以自己搞个文本框,检测一下用户的想法,然后去除通配符再告诉GridControl,这就叫曲线救国。
大佬好, 我本来用的就是Contains,如何转成StartWith呀?
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;
}
}
}
}
}