2011-08-09 71 views
8

Tôi mệt mỏi để lọc một datagridview sử dụng một hộp, hộp văn bản được chứa trong một tabpage, nhưng nó không phải đang làm việc, đây là mã:Làm thế nào để lọc datagridview bằng cách sử dụng một hộp văn bản trong C#?

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     try 
     { 
      ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "like '%" + textBox1.Text.Trim() + "%' "; 
     } 
     catch (Exception) { } 

    } 
+0

Bạn có ngoại lệ bị bắt không? – jv42

+0

Lỗi cú pháp: Thiếu toán hạng trước toán tử 'Thích'. – amer

Trả lời

18

RowFilter phép bạn chỉ định một bộ lọc dựa trên các giá trị cột. Vì vậy, LIKE áp dụng cho một cột cụ thể, không áp dụng cho toàn bộ hàng. Vì vậy, tình trạng của bạn nên được

"YourColumn like '%" + textBox1.Text.Trim() + "%' 

Ngoài ra, đừng quên rằng TextBox có thể chứa ký tự ', vì vậy bạn cần phải thoát khỏi nó:

"YourColumn like '%" + textBox1.Text.Trim().Replace("'", "''") + "%' 

Hoặc, sạch hơn:

string.Format("YourColumn like '%{0}%'", textBox1.Text.Trim().Replace("'", "''")); 
+1

+1 Tôi nghĩ bạn nên làm rõ "áp dụng cho một cột" vì nó có thể khiến người khác nhầm lẫn sau này. –

+1

+1 để chỉ ra lối thoát từ ''' char –

+0

@Code Monkey, tôi không chắc làm thế nào tôi có thể làm rõ ... làm thế nào bạn sẽ nói nó? –

4

hãy thử điều này là tìm kiếm thư bất kể thư đó ở đâu (đầu, giữa hoặc cuối)

private void TextBox1_TextChanged(object sender, EventArgs e) 
    { 
     try 
     { 
      //this code is used to search Name on the basis of TextBox1.text 
      ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = string.Format("Column_Name like '%{0}%'", TextBox1.Text.Trim().Replace("'", "''")); 
     } 
     catch (Exception) 
     { 

     } 
    } 

Điều này tìm kiếm từ chữ cái đầu tiên theo sau chữ cái tiếp theo.

try 
     { 
      ((DataTable)dataGridViewX1.DataSource).DefaultView.RowFilter = "Column_Name like'" + textBox1.Text.Trim().Replace("'", "''") + "%'"; 
     } 
     catch (Exception) 
     { 

     } 
Các vấn đề liên quan