Проблема фильтрации DataTable до-диез (специальные символы, используемые в заголовке) - PullRequest
1 голос
/ 01 апреля 2019

Я пытался отфильтровать свое представление данных в C # с помощью фрагмента кода, который я нашел, но я не знаю, что именно мне следует написать в место «Имя».

Это работает, если я фильтрую столбцы, имена которых являются только одним словом, но в моем случае это могут быть даже предложения. И если я использую более одного слова, выдается синтаксическая ошибка.

(dataGridView.DataSource as DataTable).DefaultView.RowFilter = string.Format("Name={0}",searchBox.Text);

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Попробуйте этот код.Отлично работает в случае столбца DataGridView, названного длинными предложениями или состоящего из специальных символов.Используйте текстовое поле с событием textChanged в вашей winform:

        BindingSource bs = new BindingSource();
        bs.DataSource = PrintGrid17.DataSource;
        bs.Filter = string.Format("[Customer Name] like '%{0}%' OR Phone like '%{0}%' OR [EMI 17 Collection Status and Month/Year] like '%{0}%'", txtSearchPrint17.Text.Trim().Replace("'", "''"));
        PrintGrid17.DataSource = bs;
0 голосов
/ 01 апреля 2019

Это должно работать:

(dataGridView.DataSource as DataTable).DefaultView
    .RowFilter = string.Format("Name='{0}'", searchBox.Text.Replace("'", "''"));

Он окружает строку поиска одинарными кавычками, что является необходимым синтаксисом, и экранирует любые одинарные кавычки в строке поиска, удваивая их.

...