2013-03-19 103 views
1

我处于C#的非常开始阶段。我正在创建一个为客户提供优惠的计划。我获得了第一份报价和一个excel文件加载到datagridview的子窗体。当我双击该行时,它将被复制到第一行的datagridview中。它工作正常。但是我想添加一个带有TextChanged事件的TextBox,所以当用户放置一些文本时,一个datagridview(第二种形式,那个带有excel数据的)应该只显示包含这个文本的行。如果无法一次搜索所有的列,那很好。但我无法让它工作。我发现了一些溶剂,我复制了它,但我不工作。因此,这里的代码:如何在将Excel文件加载到文本框之后通过文本框过滤datagridview

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; 


} 
+0

你有没有试着用dataGridView1.DataBind(); 作为文本更改事件的最后一行 – 2013-03-19 11:44:34

回答

0

该做的工作:

BindingSource bs = new BindingSource(); 
    bs.DataSource = dataGridView1.DataSource; 
    bs.Filter = sColumnaDoPrzeszukania + " like '%" + textBox1.Text + "%'"; 
    dataGridView1.DataSource = bs; 
+0

如果您使用的是XDocument,这是否正常工作?或者它只适用于Datatables? – 2014-06-19 00:58:19

+1

不幸的是我不知道... – 2014-06-20 16:40:28