.:: CODE SNIPPET ::.

"Your time is limited, so don't waste it living someone else's life"

Tạo bộ lọc dữ liệu trong DataGridView


Một khi dữ liệu đã được thể hiện trong DataGridView, chúng ta có thể lọc những dữ liệu mà chúng ta cần, mà không cần phải truy cập lại trong cơ sở dữ liệu.

Giả sử chúng ta đã có dataGridViewCustomer liệt kê danh sách các khách hàng, lại có một textbox là txtName để nhập tên của khách hàng, và một nút bấm btnFind để xem có bao nhiêu khách có tên như nhập vào:

Đầu tiên, chúng ta tạo sự kiện cho nút bấm:

        private void btnFind_Click(object sender, EventArgs e)
        {
            string filter="Name='"+txtName.Text+"'";
            CheckExist((DataTable)this.dataGridViewCustomer.DataSource,filter);

        }

Bây giờ chúng ta tạo ra hàm CheckExist() để lọc kết quả cần tìm:

        private void CheckExist(DataTable tbl, string filterExpression)
        {
            if (filterExpression=="")
            {
                return ;
            }
            DataRow[] rows = tbl.Select(filterExpression);
            if (rows.Length<=0)
            {
                return;
            }
            //Thể hiện dữ liệu tìm được ra dataGridViewCustomer
            tbl = ((DataTable)this.dataGridViewCustomer.DataSource).Clone();
            for (int i = 0; i < rows.Length; i++)
            {
                DataRow row = tbl.NewRow();
                row[0] = rows[i].ItemArray[0].ToString();
                row[1] = rows[i].ItemArray[1].ToString();
                row[2] = rows[i].ItemArray[2].ToString();
                row[3] = rows[i].ItemArray[3].ToString();
                row[4] = rows[i].ItemArray[4].ToString();
                row[5] = rows[i].ItemArray[5].ToString();
                tbl.Rows.Add(row);
            }
            dataGridViewCustomer.DataSource = tbl;
        }

Ngoài ra, bộ lọc còn hổ trợ thêm các hàm logic để giúp ta lọc dữ liệu dễ dàng hơn như: AND, OR, IN

"Name='Tuan Anh' AND GioiTinh='Nam'"

Ngoài ra còn có cách khác dùng BindingSource.
Với cách này, thì chúng ta sẽ gán giá trị cho thuộc tính Filter của BindingSource.
Đơn giản như sau:

bindingSource.Filter = "Name like '%Minh%'";
//Các dấu % giúp tìm thấy chuỗi con Minh trong các chuối khác
dataGridViewCustomer.Refresh();
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: