В настоящее время я работаю над ASP. NET MVC веб-сайтом, на котором у меня есть элемент управления Dev Express ASPxGridView. В настоящее время для элемента управления AutoFilterCondition установлено значение «AutoFilterCondition.Contains», поэтому для каждого столбца я могу ввести ключевое слово для поиска, и он покажет все записи, в которых столбец содержит это ключевое слово.
Теперь мне нужно изменить это потому что простой поиск содержит больше не достаточно для одного из столбцов в сетке. Новое требование заключается в том, что пользователь может использовать подстановочный знак (звездочка), чтобы стало возможным вводить ключевые слова, например «Пример *». Также должно быть возможно несколько подстановочных знаков для каждого ключевого слова поиска.
Я обнаружил, что могу использовать событие ProcessColumnAutoFilter, чтобы изменить критерии для определенного столбца, но я просто не могу понять, как реализовать подстановочный знак. особенность с этим событием. Вот пример того, что я пробовал до сих пор:
settings.ProcessColumnAutoFilter = (sender, e) =>
{
if (e.Column.FieldName != "Path")
{
return;
}
if (e.Kind == GridViewAutoFilterEventKind.CreateCriteria)
{
e.Criteria = DevExpress.Data.Filtering.CriteriaOperator.Parse($"[Path] like '%{e.Value}%'", e.Value);
}
};
С этим кодом происходит несколько странных вещей. Например, каждое ключевое слово, которое я ввожу, удаляется из текстового поля поиска для столбца «Путь», как только я нажимаю клавишу ввода. Почему? Оператор like также использует «%» в качестве подстановочного знака вместо звездочки, так что это работает не совсем так, как я хочу. Как использовать звездочку в качестве символа подстановки, а также убедиться, что ключевое слово не исчезает при его поиске?