В этом примере я покажу вам, как фильтровать DataGridView с текстом, введенным в текстовое поле.
Создайте новое приложение Windows. Добавьте элемент управления DataGridView и textbox.
Загрузите данные из DataTable. (Form_Load)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
DataTable table; private void Form1_Load(object sender, EventArgs e) { table = new DataTable(); table.Columns.Add("Id", typeof(int)); table.Columns.Add("FirstName", typeof(string)); table.Columns.Add("LastName", typeof(string)); table.Columns.Add("City", typeof(string)); table.Rows.Add(1, "Leon", "Ardon", "Paris"); table.Rows.Add(2, "Ben", "Jamir", "London"); table.Rows.Add(3, "Samuel", "Toe", "Berlin"); table.Rows.Add(4, "Lila", "Foe", "Madrid"); dataGridView1.DataSource = table; } |
Теперь в свойстве text_changed текстового поля добавьте следующий код. Здесь я фильтрую его по столбцу » FirstName”
1 2 3 4 5 6 |
private void txtSearch_TextChanged(object sender, EventArgs e) { DataView dv = table.DefaultView; dv.RowFilter = "FirstName LIKE '" + txtSearch.Text + "%'"; dataGridView1.DataSource = dv; } |
Получилось с некоторыми изменениями на с++. В идеале найти бы хороший пример как делать фильтрацию по типу экселевской — с выпадающим комбобоксом на хэдере и с чекбоксами. На шарпах есть библиотека DataGridViewAutoFilter, но на c++ не заводится.
В чем сложность написать запросы с жесткой привязкой к контролам и выбирать их их выпадающего списка или работать в дальнейшем с чекбоксами?