2013-05-02 58 views
0

我接管了一些我不太熟悉的代码。我们使用访问数据源来填充DGV。使用DataView与MySQL填充DataGridView

我只是改变它来填充从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); 

但是,当它运行我得到这个错误: 对象引用不设置到对象的实例。

+0

也许这是因为dataGridView的DataSource是BindingSource而不是DataTable? – Davio 2013-05-02 08:07:47

+0

我相信你是对的。我只是不明白如何让它达到我需要的方式。 – 2013-05-02 14:51:35

回答

1

你的DataGridView已绑定到DataTabe,所以你应该能够只是这样做: -

dataGridView1.DefaultView.RowFilter = string.Format("Name LIKE '%{0}%'",txtSearch.Text); 
+1

不幸的是我希望这很简单。 System.Windows.Forms.DataGridView“不包含”DefaultView“的定义,并且没有找到接受类型为”System.Windows.Forms.DataGridView“的第一个参数的扩展方法”DefaultView“。 – 2013-05-02 13:45:19

0

你做的吧...你要创造一个新的数据视图,并使用你的数据表DT 。

只是有一个错误,你打电话给你的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;  
     } 

我希望这个解决您的问题!祝你今天愉快!