Member 13765884 Ответов: 1

Поиск datagridview путем, используя поле со списком и текстовое поле


При запуске база данных не изменилась - ничего не происходит, когда я добавляю текст в текстовое поле для поиска
private void textBox5_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        if (String.IsNullOrEmpty(textBox5.Text))
            customer_OrdersBindingSource.Filter = string.Empty;
        else
            customer_OrdersBindingSource.Filter = string.Format("{0}='{1}'", comboBox1.Text, textBox5.Text);
    }
}


Что я уже пробовал:

private void textBox5_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        if (String.IsNullOrEmpty(textBox5.Text))
            customer_OrdersBindingSource.Filter = string.Empty;
        else
            customer_OrdersBindingSource.Filter = string.Format("{0}='{1}'", comboBox1.Text, textBox5.Text);
    }
}

1 Ответов

Рейтинг:
0

Wendelius

Один очевидный вопрос заключается в том, как выглядит выражение, когда оно добавляется в фильтр. используя отладчик, поместите точку останова в строку, где вы устанавливаете фильтр, и убедитесь, что фильтр имеет правильное значение. Например, текст в combobox написан точно так же, как столбец назван в источнике данных

При очистке фильтра вместо установки пустой строки в фильтр рекомендуется использовать Объектом bindingsource.Способ RemoveFilter (Системы.Окна.Формы)[^]

Я так понимаю, что идея состоит в том, чтобы позволить пользователю искать с частичным текстом, другими словами, текст не должен соответствовать значению в источнике данных в целом. Если это так, то вам, вероятно, следует изменить сравнение равенства на LIKE. Другими словами что-то вроде

customer_OrdersBindingSource.Filter = string.Format("{0} LIKE '{1}*'", comboBox1.Text, textBox5.Text);
Для получения дополнительной информации см. объект DataColumn.Свойство Выражения (System.Data)[^]