2014-10-16 105 views
0

我有這種情況下,我需要使用文本框搜索我的datagridview我有,我試圖複製其他網站,但它給了我什麼是錯誤,新列和更多的錯誤, 我的代碼是這樣的,從數據庫加載我DATAS到GridView通過文本框搜索datagridview c#.NET

private void cashier_update_Load(object sender, EventArgs e)  
{   
    con.ConnectionString = @""; 
    con.Open();  
    SqlDataAdapter sda = new SqlDataAdapter("SELECT entry_no,prod_id, prod_name,  wantiti,item_status FROM Table_3 Where item_status= 'ACTIVE'", con);  
    DataTable dt = new DataTable(); 
    sda.Fill(dt); 
    dataGridViewX1.Rows.Clear();  
    foreach (DataRow item in dt.Rows)  
    { 
     int n = dataGridViewX1.Rows.Add();  
     dataGridViewX1.Rows[n].Cells[0].Value = item[0].ToString();  
     dataGridViewX1.Rows[n].Cells[1].Value = item[1].ToString();  
     dataGridViewX1.Rows[n].Cells[2].Value = item[2].ToString();  
     dataGridViewX1.Rows[n].Cells[3].Value = item[3].ToString(); 
    }  
    con.Close(); 
} 

現在我需要的是要搜索的列2是通過KEY_UP或textchange PROD_NAME。

+0

http://www.youtube.com/watch?v=z0HwGx10xz8 這一個,但我得到新的專欄, – 2014-10-16 14:17:15

+0

電影中的方法是一個非常耗電的方法。您正在建立一個連接,並通過每次按鍵查詢數據庫。它更好地將數據緩存在你的RAM中。 – 2014-10-16 14:26:40

回答

0

您可以使用過濾器對象來執行此操作。但首先你必須使用數據源將數據綁定到gridview(dataGridViewX1.datasource = dt;在你的情況下,你可以刪除你的foreach循環,因爲列和行是自動添加的),然後你可以使用bindingsource.filter。

有關過濾器,你可以看看下面的答案的詳細信息:How to filter DataGridView in C# Win Forms?

完整的文檔可以在這裏找到:http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.filter(v=vs.110).aspx

+0

好吧,先生,虐待它嘗試 – 2014-10-16 14:17:35

+0

編輯:已經做到了,它的工作,謝謝,無論如何...你知道如何改變我的專欄名稱嗎?因爲它顯示我的數據庫列爲wantiti,但我希望它顯示數量,謝謝 – 2014-10-16 14:29:46

+0

dgDatagrid.columns [「name_used_in_database」]。name =「new_name」。你也可以使用索引來選擇你的列,但是當你不想交換列順序的時候名字是節省的 – 2014-10-16 14:32:14