2014-02-17 59 views
2

我有一個表格,其中一個簡單的網格視圖由數據庫中的表填充像TicketID,名稱,公司,產品等列現在我想添加一個搜索功能,以便用戶可以搜索客戶名稱或公司或TicketID 。如何在C#Windows窗體應用程序中的Data gridview中搜索?

我該怎麼做?我想在數據網格上面放置一個combox盒子,文本框和一個簡單的「搜索」按鈕。例如,當用戶選擇TicketID時,在文本框中輸入「1」並按下「搜索」,它應該刷新其中TicketID = 1的條目的數據網格。

現在我對如何實現它沒有任何想法。谷歌搜索,但沒有發現任何有用的。所以在這方面的任何幫助將不勝感激。

問候。

回答

6

YPU可以考慮:

BindingSource bs = new BindingSource(); 
bs.DataSource = dataGridView1.DataSource; 
bs.Filter = columnNameToSearch + " like '%" + textBox1.Text + "%'"; 
dataGridView1.DataSource = bs; 

這將顯示包含來自textbox1的文本在您選擇的列中的記錄。我也正是你所要求的:)

+0

感謝你的幫助,但是當我嘗試實施它,它顯示了這個錯誤: 「無法解釋令牌'{'在位置27「。 –

+0

向我們顯示您的代碼,特別是包含第27行 –

+0

另外我發現了一個可能有用的註釋:_It看起來像我得到的錯誤:「無法解釋令牌'{'在位置7」因爲我綁定WebDataGrid的SQLDataSource是被控件過濾(下拉框)。 SQLDataSource的FilterExpresion設置爲:「MyFieldName = {0}」。一旦我刪除了過濾器表達式,錯誤就不再有了。問題是我需要過濾SQLDataSource,只要這個dropdownbox改變了它的選擇值。_ –

0

你需要什麼,過濾,搜索不是搜索......從集合突出了正確的行

設置網格的數據源DataTable.Select方法的結果

dtData.Select("TicketID = 1") 

也看看這個post

1

如果你想刷新DataSource依賴於搜索參數,那麼你需要建立一個新的SQL查詢依靠然後在「搜索」控件:

會更好你顯示你從數據庫中獲取數據的代碼,
但這是我的鏡頭採用手動SQL查詢創建:

//... 
StringBuilder query = new StringBuilder(); 
query.AppendLine("SELECT TicketID, Name, Company, Product"); 
query.AppendLine("FROM YourTable WHERE 1=1"); 
if (txtSearch.TextLength > 0) 
{ 
    query.AppendLine("AND TicketID = @TicketID"); 
    //Here add sqlparameter with textbox value 
} 
//... and so on 
0
DataSet ds; 
DataView dv; 

public Form1() 
    { 
     InitializeComponent(); 
     ds = new DataSet(); 
     dv = new DataView(); 
    } 

private void Form1_Load(object sender, EventArgs e) 
{ 
    ds=SelectStudents();    
    dv.Table = ds.Tables[0]; 
    dataGridView1.DataSource = dv; 
} 

現在,在文本框的text_changed事件,下面寫鱈魚Ë

dv.RowFilter = "StudentName like '%" + textBox1.Text + "%'"; 
dataGridView1.DataSource = dv; 
+0

如果有任何選項來搜索整個GridView我不想指定columnName –

1
BindingSource bs = new BindingSource(); 
bs.DataSource = dgrid.DataSource; 
bs.Filter = "Full_Name like '%" + tsptxt_search.Text + "%'"; 
dgrid.DataSource = bs; 

這對我的作品。

0
BindingSource bs = new BindingSource(); 
bs.DataSource = dataGridView1.DataSource; 
bs.Filter = "[database column Name To Search] like '%" + textBox1.Text + "%'"; 
dataGridView1.DataSource = bs; 
0

創建搜索輸入一個文本框,並使用下面的代碼在其TextChanged事件

private void txtSearch_TextChanged(object sender, EventArgs e) 
{ 
    (dataGridView.DataSource as DataTable).DefaultView.RowFilter = string.Format("TicketID like '{0}%' OR Product like '{0}%' OR Name like '{0}%' OR Product like '{0}%'", txtSearch.Text); 
} 
相關問題