2014-10-18 63 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