v_tigra Ответов: 7

Как отфильтровать datagridview, введя текст в текстовое поле?


Эй ребята

У меня есть dataGridView со многими записями. Я хотел бы отфильтровать все записи с текстом из текстового поля, например:

Текстовое поле текст = "Мистер", когда я нажмите кнопку "Поиск", весь список в datagridview в shoult показывать только записи с названием вроде 'Мистер'.


Кто-нибудь может мне помочь, пожалуйста?


Спасибо за любую помощь.
валентигра

Naz_Firdouse

что вы уже пробовали до сих пор???

v_tigra

BindingSource bs = новый BindingSource();
БС.Источник данных = dataGridView1.Источник данных;
bs.Filter = dataGridView1.Columns[1].HeaderText.ToString() + " LIKE '%" + searchTextBox.Текст + "%'";
dataGridView1.Источник данных = БС;

но это не помогает..

7 Ответов

Рейтинг:
36

Santhosh23

привет попробуй вот это

private void TextBox_TextChanged(object sender, EventArgs e)
{
    (DataGridView.DataSource as DataTable).DefaultView.RowFilter =
    string.Format("Name LIKE '{0}%' OR Name LIKE '% {0}%'", TextBox.Text);
}


v_tigra

Огромное спасибо!

Рейтинг:
2

v_tigra

Я уже пробовал это сделать:

BindingSource bs = новый BindingSource();
БС.Источник данных = dataGridView1.Источник данных;
bs.Filter = dataGridView1.Columns[1].HeaderText.ToString() + " LIKE '%" + searchTextBox.Текст + "%'";
dataGridView1.Источник данных = БС;

но это ничего не показывает..

Naz_Firdouse

к какому источнику данных вы привязываетесь?
потому что
Документация MSDN[^] скажет:

Фильтрацию поддерживают только базовые списки, реализующие интерфейс IBindingListView.

v_tigra

Я просто загружаю все записи из моей таблицы базы данных в элемент управления datagridview

Naz_Firdouse

попробуйте использовать Rowfilter, как указано во второй ссылке

Рейтинг:
2

Gitanjali Singh

Ссылаться:http://stackoverflow.com/questions/19265056/filter-data-in-datagridview-c-sharp[^]
Попробовать это.


v_tigra

Я уже пробовал это, но ничего не происходит..

Рейтинг:
1

Mycroft Holmes

В случае щелчка кнопки проверьте содержимое текстового поля и используйте его для фильтрации базовой коллекции, привязанной к DGV

Возможно, Вам потребуется создать коллекцию ALL и отфильтровать ее в новую коллекцию, чтобы поддерживать функцию clear filter.


Рейтинг:
0

v_tigra

решение читать 3

Рейтинг:
0

eieisandi

частная searchsimpleButton_Click недействительным(объект отправителя, EventArgs в электронной)
{
SqlConnection con;
строка st = @"источник данных=User-PC\MYSQLSERVER;начальный каталог=officeproject;Интегрированная безопасность=True";
con = new SqlConnection(st);
против.Открыть();
строка s = @"select name,nrc,phone number from member where ([name] LIKE '%' + @name)";

SqlCommand cmd = новая команда SqlCommand(s, con);
cmd.параметры.AddWithValue ("@name", textBox1.Text);

Адаптер SqlDataAdapter = новый адаптер SqlDataAdapter(cmd);
DataSet ds = новый набор данных();
адаптер.Заполнить(ds, "член");
gridControl1.Источник данных = ДС;
gridControl1.DataMember = "член";


против.Закрывать();
}


v_tigra

есть ли еще одна возможность сделать это, не открывая соединение подобным образом? - привязку?

eieisandi

Вы берете данные из таблицы базы данных.если вы используете таблицу базы данных, то эта кодировка в порядке.

Рейтинг:
0

Member 14029614

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            BindingSource bs = new BindingSource();
            bs.DataSource = dgv1.DataSource;
            bs.Filter = "[ColumnName1] like '%" + textBox1.Text + "%' " +
                "OR [ColumnName2] like '%" + textBox1.Text + "%'" +
                "OR [ColumnName3] like '%" + textBox1.Text + "%'" +
                "OR [ColumnName4] like '%" + textBox1.Text + "%'";
            dgv1.DataSource = bs; 
        }