.NET 4.x Фильтр по нескольким полям в bindingsource - C#

Узнай цену своей работы

Формулировка задачи:

Появилась необходимость фильтровать данные по нескольким полям в DataGridView. По одному полю фильтрую без проблем, но когда дело доходит до 2х и более появляются проблемы: при составлении строки фильтра, данные нужно связывать оператором AND, но некоторые поля могут оказаться пустыми и тогда получаем ошибку в тексте фильтра. Например
Листинг программы
  1. bindingSource.Filter = "color = 'red' AND name_car LIKE '%Niss%'";
Там может быть еще куча параметров и если один из них будет пустой, то появится сообщение об ошибке
Листинг программы
  1. bindingSource.Filter = "color = '' AND name_car LIKE '%Niss%'";
или так
Листинг программы
  1. bindingSource.Filter = "color = 'red' AND ";
В моем случае есть 8 TextBox названных так : txbFilter[имя столбца в запросе] Т.е. можно составить запрос через foreach
Листинг программы
  1. //Перебираем все контролы на expandable panel
  2. foreach (Control ctr in expFilter.Controls)
  3. {
  4. //Выбираем те, у которых тип TextBox
  5. if (ctr.GetType() == typeof (TextBox))
  6. {
  7. //Выбираем те, которые не пустые
  8. if (ctr.Text != "")
  9. {
  10. //убираем строку txbFilter из названия TextBox и получаем только
  11. //название поля, которое можно использовать в запросе
  12. string nameField = ctr.Name.Remove(0, 9).ToLower();
  13. string valueField = ctr.Text;
  14. }
  15. }
  16. }
Все мои последующие попытки полный бред) Поэтому прошу помощи в реализации алгоритма фильтрации данных.

Решение задачи: «.NET 4.x Фильтр по нескольким полям в bindingsource»

textual
Листинг программы
  1. foreach (TextBox txb in expFilter.Controls.OfType<TextBox>.Where(tb => !string.IsNullOrEmpty(tb.Text)))
  2. {
  3.     filter += stringFilter(txb.Name.Remove(0, 9), txb.Text);
  4.     IsFirst = false;
  5. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.385 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы