0

我已经接管了一些我有点不熟悉的代码。我们使用访问数据源来填充 DGV。

我只是将其更改为从 MySQL 填充 DGV。

这是我用来绑定的类的代码片段:

public void Bind(DataGridView dataGridView)


{
        string query = "SELECT * from vwFavoritesList";

        mySqlDataAdapter = new MySqlDataAdapter(query, mySqlConnection);
        mySqlCommandBuilder = new MySqlCommandBuilder(mySqlDataAdapter);

        dataTable = new DataTable();
        mySqlDataAdapter.Fill(dataTable);

        bindingSource = new BindingSource();
        bindingSource.DataSource = dataTable;

        dataGridView.DataSource = bindingSource;
    }

我在移植之前的 dataview 命令时遇到问题。

这是我们之前的搜索代码,效果非常好。

   private void txtSearch_TextChanged(object sender, EventArgs e)
    {

        DataView dv = new DataView(this.dsFavoritesList.gryFavoritesList);
        dv.Sort = "Name ASC";
        dv.RowFilter = string.Format("Name LIKE '%{0}%'",txtSearch.Text);
        dataGridView1.DataSource = dv;
    }

我想出了:

  (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Name LIKE '%{0}%'",txtSearch.Text);

但是当它运行时我得到这个错误:对象引用未设置为对象的实例。

4

2 回答 2

1

您的 DataGridView 已经绑定到 DataTabe,因此您应该可以这样做:-

dataGridView1.DefaultView.RowFilter = string.Format("Name LIKE '%{0}%'",txtSearch.Text);
于 2013-05-02T08:46:21.933 回答
0

你做对了......你必须创建一个新的 DataView 并使用你的 DataTable dt。

只有一个错误,你必须调用你的 dv.RowFilter 并在 '' 中设置值,如:

private void txtSearch_TextChanged(object sender, EventArgs e)
        {
            DataView dv = new DataView(dt);
            dv.RowFilter = "Name LIKE '" + txtSearch.Text.Trim() + "'";
            dataGridView1.DataSource = dv;    
        }

我希望这能解决你的问题!祝你今天过得愉快!

于 2014-11-03T09:41:43.213 回答