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;
    }

以前使用していたデータビュー コマンドの移植で問題が発生しています。

これは、以前はうまく機能していた検索コードです。

   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を使用する必要があります。

1 つだけ間違いがあります。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;    
        }

これで問題が解決したことを願っています!良い1日を!

于 2014-11-03T09:41:43.213 に答える