2014-10-18 71 views
-1

我試圖做出datagridview的C#datagridview的交互式過濾

互動式篩選我用EF來獲取數據

  var query = from client in db.Clients 
         select new 
         { 
          client.Id, 
          client.Code, 
          client.Title 
         }; 

      clientsBs.DataSource = query.ToList(); 
      dataGridView1.DataSource = clientsBs; 

內容,而無需其它數據庫查詢過濾datagridview的最好方法是什麼? 我試過這種方法,但它沒有給我結果/錯誤...

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     BindingSource bs = new BindingSource(); 
     bs.DataSource = dataGridView1.DataSource; 
     bs.Filter = "Code like '%" + textBox1.Text + "%'"; 
     dataGridView1.DataSource = bs; 
    } 

什麼想法?

+0

你可能想要下載用於WinForms的Telerik UI,它們的'DataGridView'自動提供此功能... – 2014-10-19 03:18:42

+0

我不想使用其他組件 – Ricardas 2014-10-19 09:05:08

+0

這只是一個建議... – 2014-10-20 07:03:16

回答

0

請指出錯誤,如果有的話。我想設置DataSource之前,你應該把它設置爲null

dataGridView1.DataSource = null; 

dataGridView1.DataSource = bs; 

UPDATE:

用於過濾DataGridView你應該改變的數據源,然後再次將其綁定:

var dataview = yourDataSet.Tables[tableIndex].DefaultView; 
dataview.RowFilter = "Code like '%" + textBox1.Text + "%'"; 
var newDT = dataview.ToTable(); 
var newDS = new DataSet();  
newDS.Tables.Add(newDT); 
dataGridView1.DataSource = null; 
dataGridView1.DataSource = newDS; 
+0

現在它填充datagridview但未過濾 – Ricardas 2014-10-19 09:10:00

+0

使用'dataGridView1.RowFilter'而不是'bs.Filter' – 2014-10-19 09:44:44

+0

RowFilter不能與dataGridView一起使用! – Ricardas 2014-10-19 10:06:17