2015-07-19 55 views
-1

我想過濾GridView取決於TextBox在窗體下..我想當我寫例如ec它顯示公司名稱的所有行包括ec那麼如果我更改TextBox中的字符串也會改變GridView中的數據。我如何過濾gridview取決於在文本框中更改的文本

+0

您可以使用TextBox上的TextChanged事件。你有沒有嘗試過任何東西? – Saragis

+0

好的..但是我怎樣才能使用textchanged事件..我嘗試了更多的鱈魚,但它不工作 –

+3

__不要調用'DataGridView'' GridView'!這是錯誤的,令人困惑和必然會得到錯誤的答案,浪費每個人的時間。總是用他們的__right__名稱來稱呼事情!是的,它需要更多__four__字母才能打字,但在這裏尋求幫助時__not__時間太懶了! - – TaW

回答

0

的DoubleClick您TextBox寫代碼在這裏:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    string sql = "SELECT * FROM Table WHERE Name LIKE @Name"; 
    using (SqlCommand cmd= new SqlCommand(sql, cn)) 
    { 
     cmd.Parameters.AddWithValue("@Name", "%" + textBox1.Text + "%"); 
     //rest of the code 
     //dataGridView.DataSource = your DataSource; 
    } 
} 

編輯:爲了避免在每次擊鍵的數據庫中提取數據,在textBox1_TextChanged事件試試這個:

DataSet ds = new DataSet();//Populate ds from a SqlDataAdapter 

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    DataView dv = ds.Tables[0].DefaultView; 
    dv.RowFilter = string.Format("name LIKE '%{0}%'", textBox1.Text); 
    dataGridView1.DataSource = dv; 
} 
+0

我懷疑從每個按鍵的數據庫中提取數據是個好主意。使用BindingSource比所有那些sql調用好得多..! – TaW

+0

看起來好多了。 – TaW

+0

呵呵,沒有足夠的時間來測試它,atm .. – TaW

2

您是否嘗試過datagrid上的行篩選器屬性?

(dataGridViewFields.DataSource as DataTable).DefaultView.RowFilter = string.Format("Field = '{0}'", textBoxFilter.Text); 

查看布拉德布魯斯的回答here爲例。

+0

找不到列 –

+0

您是否更改了「字段」的名稱?到你想要搜索的列? –

相關問題