2013-05-02 72 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;  
     } 

我希望這個解決您的問題!祝你今天愉快!