2011-10-20 39 views
11

Tôi có một Datagridview và Data SourcedtCustomer Tôi chỉ muốn lọc nội dung của chế độ xem lưới dựa trên văn bản tìm kiếm. Đã thử mã sau đâyDatatable Select() Phương thức

DataTable dtSearch = dtCustomer; 
dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'"); 
grvCustomer.DataSource = dtSearch; 

Nhưng điều này không hoạt động. Nếu bất kỳ cơ quan nào biết giải pháp, vui lòng chia sẻ.

Trả lời

11

Hãy thử điều này:

dtSearch.DefaultView.RowFilter = "cust_Name like '" + txtSearch.Text + "%'"; 

Và kiểm tra bất cứ điều gì có không gian phải được loại bỏ bằng cách triming văn bản.

3

Bạn có thể thử sử dụng một DataView (mã không kiểm tra) -

DataView dv = new DataView(dtSearch); 
dv.RowFilter = "cust_Name like '" + txtSearch.Text + "%'"; 
grvCustomer.DataSource = dv; 
8

Giá trị trả về cho DataTable.Select là một DataRow [] mảng. Nó trả về một danh sách các DataRows phù hợp. Mã của bạn hiện không có gì với các hàng đó.

Bạn có thể thiết lập một DataView với một bộ lọc và thiết lập DataSource của lưới để DataView:

DataView dv = new DataView(dtSearch); 
dv.RowFilter = "..."; 
grvCustomer.DataSource = dv; 
1

DataTable.Select trả về mảng của hàng, nhưng bạn phải ràng buộc toàn bộ bảng dữ liệu hàng không được lọc. sử dụng cách này hoặc DataView

DataTable dtSearch = dtCustomer; 
var filter = dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'"); 
grvCustomer.DataSource = filter.ToList(); 
2

Hoặc thử cách này;

dataGridView.Datasource = datatable.Select("....").CopyToDataTable() 
0

Tôi nghĩ đây là những gì bạn đang tìm kiếm?

//DataTable dtSearch = dtCustomer; 
//dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'"); 


grvCustomer.DataSource = dtCustomer.Select("cust_Name like '" + txtSearch.Text + "%'"); 

Và khi bạn muốn quay trở lại dữ liệu gốc

grvCustomer.DataSource = dtCustomer; 
-1
dtCustomer.Rows.Cast<DataRow>().Select(dr => (string)dr["cust_Name"].Startswith("zzz")).ToList() 
1

Bạn có thể làm một cái gì đó như thế này.

DataView dv1 = dtDefault.DefaultView; 
dv1.RowFilter = "CusGroupId=1 and CustomerCode LIKE '"+txtCustomer.Text +"%'"; 
DataTable dt=dv1.ToTable(); 
Các vấn đề liên quan