Как отфильтровать datagridview с помощью текстового поля и нажатия кнопки в C#?
Я нашел ... решение но я не могу понять окончательный код. Кто-нибудь, пожалуйста, может мне помочь? Я хочу отфильтровать свой dataridView по значению текстового поля после нажатия на кнопку без базы данных. Итак, очень простой фильтр.
Спасибо!
Что я уже пробовал:
private void FilterButton_Click(object sender, EventArgs e) { DataTable dt = ((DataTable)DataGridView2.DataSource); foreach (DataGridViewRow row in DataGridView2.Rows) { // Test if the first column of the current row equals // the value in the text box if ((String)row.Cells["Month"].Value == birthdayMonth.Text) { // we have a match row.Selected = true; } else { row.Selected = false; } } }
Richard MacCutchan
Может быть и так row.Cells["Month"].Value
и birthdayMonth.Text
бывают разные типы, или даже разные значения. Но вы не сказали нам, и мы не можем догадаться.
Galarist_00
Я не понимаю, что ты имеешь в виду.
Kenneth Haugland
Он спрашивает, распечатываешь ли ты строки.Ячейки["месяц"].значение что вы видите? В общем, лучше сказать что-то вроде ToLower на обоих и использовать Contains для того, чтобы сделать фильтрацию.
Galarist_00
Ничего не изменится. Также я обновил ссылку на свой пост.
Kenneth Haugland
Вы на самом деле не ответили на вопрос.
Mike V Baker
Они спрашивают, являются ли оба типа данных, которые вы сравниваете, "текстовыми". Я собираюсь предположить, что оба (String)ряда.Ячейки["месяц"].значение и месяц рождения.Текст-это элементы текстового типа.
Похоже, что вы создали DataTable и установили его в качестве источника данных для сетки. Чтобы отфильтровать содержимое сетки, вы хотите выполнить действие над списком, поэтому ищите функции в DataTable supporting filter. Обычно я использую n-уровневую систему, и мои источники данных-это List<mytype>, Поэтому я не уверен, какую функцию вызывать (или я бы опубликовал ее как решение). Возможно, Вам также потребуется вызвать grid BindingSource.ResetBindings