Galarist_00 Ответов: 1

Как отфильтровать 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

1 Ответов

Рейтинг:
0

Gerry Schmitz

Вы должны вернуться и пересмотреть "другое" решение.

Вы выбрали "самый простой" ответ, но также и тот, который имеет "ноль голосов".

Вероятно, вам следует рассмотреть вариант "вниз по странице".

Цитата:
DataView dv = ((DataTable)DataGridValue.Источник данных).DefaultView;
dv.RowFilter = "ColumnName < TB1 и ColumName > TB2"

После этого привяжите DataView к вашему gridView


ОТ

c# - фильтрация значения строки данных в столбце DataGridView со значением внутри двух текстовых полей - переполнение стека[^]