Mình đang có một thanh tìm kiếm tài khoản
Và mình load lên datagridview dữ liệu:
Mình muốn dùng ô search để để nhập từ khóa tìm kiếm trong cột họ và tên. Và hiển thị kết quả gần đúng
Mình đang có một thanh tìm kiếm tài khoản
Và mình load lên datagridview dữ liệu:
Mình muốn dùng ô search để để nhập từ khóa tìm kiếm trong cột họ và tên. Và hiển thị kết quả gần đúng
Dùng like nhé kiểu như này select * from Food where name like para
Đó là code tìm kiếm của SQL rồi. Bạn thớt hỏi code tìm kiếm sau khi DataGridView load dữ liệu cơ
Sao không query xong rồi đổ dữ liệu vào DataGridView nhỉ, đỡ khoản xử lý tìm kiếm bằng c#, mỗi tội query hơi nhiều
Không biết bạn có biết LINQ không.
var FilteredList = From x in ItemList
Where x.Name.StartsWith (f)
Select x
var FilteredList = From x in ItemList
Where x.Name.Contains (f)
Select x
Đó là linq. Có thể làm việc với SQL và nhiều loại khác nữa như list, array, datatable…
Không nên tìm kiếm trên DataGridView vì nó sẽ chạy nửa ngày mới xong
Nên có 1 bảng dữ liệu riêng và làm việc trong đó. DataGridView chỉ làm nhiệm vụ hiển thị hoặc update.
Bạn tìm hiểu Elastic Search nhé
Một thanh tìm kiếm chung cho tất cả thì nên xài search tool riêng.
Trong phần này mình muốn thay ItemList bằng một cột trong database thì phải làm thế nào bạn ?
Cách đơn giản nhất
Giả sử bạn có 1 class User được khai báo như sau:
class User{
public int ID{get;set;}
public string FullName {get;set;}
public string NickName {get;set;}
public string Email {get;set;}
public ACCESSRIGHT AccessRight {get;set;} // Giả sử nó là 1 enum
}
Ở Form(hoặc Presentation hoặc html file hoặc Xaml) bạn có GridView {Name = GridView1}
Và Form.cs có 1 Object List<User> UserFromDataBase;
UserFromDataBase Get theo cách thông thường bạn làm (Run QueryString, Get From API, Dùng Framework, hoặc DataContext tùy bạn)
Sau đó ở sự kiện SearchTextbox.TextChanged
Xử lý SearchTextbox.Text
GridView1.ItemSource = ( From x in UserFromDataBase
Where x.FullName.StartsWith ( SearchTextbox.Text )
Select x).ToList();
//Update GridView Data Source
Hoặc bạn có thể thm khảo DataBinding nếu chọn cách này.
Ak Nếu DataSource của bạn là dạng DataTable ( Không phải dạng List như trong Ví Dụ)
Bạn tham khảo đoạn mã sau:
var results = From myRow in myDataTable.AsEnumerable()
Where myRow.Field<string>("FullName").StartsWith(SearchTextbox.Text)
Select myRow;
GridView1.ItemSource = result; //Nhớ Convert qua kiểu DataTable.
Viết một cái store produce .Rồi code gọi lên là tốt nhất về hiệu năng mà vẫn đảm bảo bài toán đugns