让我们说在我的数据库中,在名为 UserName 的列中,我有这个值 Jean-Andrew Pierre 。当我输入 Andrew Jean Pierre 时,我在创建用于从db检索此值的过滤器时遇到问题。如您所见,名称的顺序不同,并且缺少某些字符。
我试过这个:
var operatorNameFilter = radGridView.Columns[nameof(Username)].ColumnFilterDescriptor;
if (string.IsNullOrEmpty(username))
{
operatorNameFilter.Clear();
return;
}
allOperatorsName = Regex.Split(username, @"\W+");
foreach (var name in allOperatorsName)
operatorNameFilter.DistinctFilter.AddDistinctValue(name);
operatorNameFilter.FieldFilter.Filter1.Operator = FilterOperator.Contains;
operatorNameFilter.FieldFilter.Filter1.LogicalOperator = FilterCompositionLogicalOperator.And;
operatorNameFilter.FieldFilter.Filter1.Value = username;
我相信必须删除最后一行,但有或没有,没有任何事情发生
谢谢, 安德列亚
答案 0 :(得分:0)
经过几次尝试后我找到了答案:
private void FilterByOperatorNames(RadGridView radGridView)
{
var operatorNameFilter = radGridView.Columns[nameof(Username)].ColumnFilterDescriptor;
if (string.IsNullOrEmpty(username))
{
operatorNameFilter.Clear();
return;
}
var allOperatorNames = Regex.Split(username, @"\W+");
var userNamesCompositeFilter = new CompositeFilterDescriptor();
foreach (var name in allOperatorNames)
{
var filterDescriptor = new FilterDescriptor(nameof(Username), FilterOperator.Contains, name);
userNamesCompositeFilter.FilterDescriptors.Add(filterDescriptor);
}
userNamesCompositeFilter.LogicalOperator = FilterCompositionLogicalOperator.And;
radGridView.FilterDescriptors.Add(userNamesCompositeFilter);
}
我希望能帮助别人。