Member 13512434 Ответов: 1

Как использовать информацию в текстовом поле для отображения информации datagridviewrow


У меня есть вкладки, я пытаюсь написать код так, чтобы, если текст в текстовом поле на вкладке 1 совпадает со словом в datagridview на вкладке 2, показывать только эти строки, возможно ли это?


Вот код, который я написал ...

private void textBox2_Leave(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox2.Text))
            {
                (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
            }
            else
            {
                (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Name='{0}'", textBox2.Text);
            }


Но когда я запускаю программу, в окне datagridview ничего не появляется, и я получаю сообщение об ошибке...

Необработанное исключение типа "System.NullReferenceException" произошло при мониторинге и управлении system.exe

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

private void textBox2_Leave(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox2.Text))
            {
                (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Empty;
            }
            else
            {
                (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Name='{0}'", textBox2.Text);
            }

1 Ответов

Рейтинг:
1

Hermann Jung

Похоже, что dataGridView1.DataSource не относится к типу DataTable.
Если dataGridView1 привязан к набору данных, DataTable или DataView, то должен работать следующий код

var cm = (CurrencyManager)dataGridView1.BindingContext[dataGridView1.DataSource, dataGridView1.DataMember];
var dataView = (DataView)cm.List;
dataView.RowFilter = string.Format("Name='{0}'", textBox2.Text);