1

私はC#で非常に始めています。私はクライアントにオファーをするためのプログラムを作成しています。オファー付きの最初のフォームと、datagridviewにロードされたExcelファイル付きのサブフォームを取得しました。行をダブルクリックすると、最初の行のdatagridviewにコピーされます。正常に動作します。しかし、TextChangedイベントを使用してTextBoxを追加したいので、ユーザーがそこにテキストを配置すると、datagridview(2番目の形式ではExcelデータを含む)にこのテキストを含む行のみが表示されます。すべてのカラムを一度に検索できない場合は問題ありません。しかし、私はそれを機能させることはできません。いくつかの解決策を見つけてコピーしましたが、機能しません。コードは次のとおりです。

private void button1_Click(object sender, EventArgs e)
{
  try
  {
    System.Data.OleDb.OleDbConnection PolaczenieBazyDanych = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\\Users\\user\\Desktop\\My Dropbox\\Cenniki\\Cennik.xlsx';Extended Properties=Excel 8.0;");
    System.Data.DataSet DtSet = new System.Data.DataSet();
    System.Data.OleDb.OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter("select * from [Tabelle1$]", PolaczenieBazyDanych);
    //Adapter.TableMappings.Add("Tabela", "TabelaTestowa");
    Adapter.Fill(DtSet);     
    dataGridView1.DataSource = DtSet.Tables[0];
    PolaczenieBazyDanych.Close();

  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.ToString());
  }
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
  DataView dv = ((DataTable)dataGridView1.DataSource).DefaultView;
  dv.RowFilter = "FromColumn like '%" + textBox1.Text + "%'";
  dataGridView1.DataSource = dv;


}
4

1 に答える 1

0

これはうまくいきました:

  BindingSource bs = new BindingSource();
  bs.DataSource = dataGridView1.DataSource;
  bs.Filter = sColumnaDoPrzeszukania + " like '%" + textBox1.Text + "%'";
  dataGridView1.DataSource = bs;
于 2013-03-21T07:48:48.897 に答える