• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[Hỏi đáp] Về bộ lọc filter với datagridview

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

fockerc
Bài viết: 1
Ngày tham gia: T.Hai 20/08/2018 1:53 pm

[Hỏi đáp] Về bộ lọc filter với datagridview

Gửi bàigửi bởi fockerc » T.Hai 20/08/2018 2:16 pm

Chào cả nhà. Mình là focker. Mới gia nhập diễn đàn. Hy vọng được mọi người giúp đỡ.
Hiện tại. Mình đang làm 1 App với Window form. VB6. Kiến thức sâu sắc về VB thì chắc mình chưa có. Nhưng tư duy lập trình thì xin tự nhận ở mức độ khá, nói vậy để tiện trong việc trao đổi.
App mình đang làm về cơ bản là một bộ đọc và lọc data được lấy vào từ file Excel.
Về cơ bản thì dùng đến Datagridview nhưng vấn đề bộ lọc filter mình đang gặp vấn đề.
Cụ thể như sau :

Trước hết, mình load file excel vào và đăng dữ liệu vào datagridview có tên DGV1.

Mã: Chọn hết

    Public Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        RadioButton1.Checked = True
        'cbx1.Checked = True

        Dim Mycon As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + tbx1.Text.ToString() + ";Extended Properties='Excel 12.0;HDR=YES;';")
        Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]", Mycon)
        Mycon.Open()
        Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
        ds = New DataSet()
        da.Fill(ds, "[Sheet1$]")
        Mycon.Close()
        DGV1.DataSource = ds.Tables("[Sheet1$]").DefaultView
    End Sub


Khi chọn một dòng từ Combo-box cbbx1, sẽ tự động lọc theo giá trị vừa được lựa chọn trong column Type

Mã: Chọn hết

    Private Sub cbbx1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbbx1.SelectedIndexChanged
        Dim keywords As String = cbbx1.Text
        ds.Tables("[Sheet1$]").DefaultView.RowFilter = "Type LIKE '%" & keywords & "%'"
    End Sub


Mình định là có 2 loại Filter : TypeName , mỗi cái một combo-box để tiện lọc
Mình đặt đặt trước mỗi combo-box một cái radio, tích vào radio tương ứng thì sẽ dùng combo-box tương ứng đồng thời sẽ disable cái combo-box còn lại. Mỗi lần click đổi radion, mình muốn danh sách sẽ reset về ban đầu, để bắt đầu một phiên lọc filter mới. Mình dùng code như sau :

Mã: Chọn hết

    Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
        cbbx2.Enabled = True
        cbbx1.Enabled = False
        cbbx1.Text = ""
        cbbx2.Text = ""
        ds.Tables("[Sheet1$]").DefaultView.RowFilter = ""
    End Sub


Ấy thế nhưng ds.Tables("[Sheet1$]").DefaultView.RowFilter = "" thực sự không hoạt động.
Các dòng xóa text của cbbx1, cbbx2 và disable đều hoạt động tốt, duy chỉ có dòng lệnh reset filter là ko hoạt động.
Mong mọi người xem giúp và góp ý. Cảm ơn.



ngocvinh
Guru
Guru
Bài viết: 693
Ngày tham gia: T.Tư 23/04/2008 8:14 am
Đến từ: Biên Hòa Đồng Nai
Been thanked: 111 time

Re: [Hỏi đáp] Về bộ lọc filter với datagridview

Gửi bàigửi bởi ngocvinh » T.Năm 23/08/2018 11:06 am

Có cho tham số đâu mà tìm ra
ds.Tables("[Sheet1$]").DefaultView.RowFilter = "Tên cột Like '%" + textbox1.text +"%'"
.NET


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.10 khách