none
Bagaimana membuat multiple filter pada datagridview vb.net RRS feed

  • Pertanyaan

  • Permisi Senior Programer, saya ingin mengembangkanpencarian datagridview saya menjadi multiple filter bagaimana ?? jadi misal saya mempunyai 2 checklistbox , kemudian dari kedua checklistbox saling berhubungan pada saat filtering. 

    Misal saya memiliki data dengan PONumber 123 sejumlah 4 data dengan tanggal yang berbeda, kemudian saya hanya ingin menampilkan data dengan spesifikasi : PONumber 123 dan pada Tanggal 12/2/2014 , itu bagaimana .

    ini coding event checkedlistbox1_click :

    Dim strQuery As String = "Select * From DetailPPC "
            If CheckedListBox1.CheckedItems.Count > 0 Then
                strQuery += " where "
                For Each clItem In CheckedListBox1.CheckedItems
                    strQuery += " po_number like '" & clItem.ToString() & "%' or "
                Next
                strQuery = strQuery.Remove(strQuery.LastIndexOf("or"))
            End If
     
            da = New OleDbDataAdapter(strQuery, Conn)
            ds = New DataSet
            da.Fill(ds, "Dapat")
            DataPPC.DataSource = ds.Tables("Dapat")
            DataPPC.ReadOnly = True

    ini screenshootnya :

    Sedikit lagi sempurna gan, tolong ya gan. Terima Kasih .

    BRG

    Rengga


    Rabu, 12 Februari 2014 09.18

Jawaban

  • Hi Rengga

    Hanya menambahkan kondisi "and" seperti pada kode dibawah

    Dim strQuery As String = "Select * From DetailPPC "
            Dim lst As List(Of String) = New List(Of String)
            If CheckedListBox1.CheckedItems.Count > 0 Then
                Dim lst1 As List(Of String) = New List(Of String)
                For Each clItem In CheckedListBox1.CheckedItems
                    lst1.Add(" po_number like '" & clItem.ToString() & "%' ")
                Next
                lst.Add(Join(lst1.ToArray(), " or "))
            End If
            If CheckedListBox2.CheckedItems.Count > 0 Then
                Dim lst1 As List(Of String) = New List(Of String)
                For Each clItem In CheckedListBox2.CheckedItems
                    lst1.Add(" theOtherColumnName2 like '" & clItem.ToString() & "%' ")
                Next
                lst.Add(Join(lst1.ToArray(), " or "))
            End If
            If CheckedListBox3.CheckedItems.Count > 0 Then
                Dim lst1 As List(Of String) = New List(Of String)
                For Each clItem In CheckedListBox3.CheckedItems
                    lst1.Add(" theOtherColumnName3 like '" & clItem.ToString() & "%' ")
                Next
                lst.Add(Join(lst1.ToArray(), " or "))
            End If
            If lst.Count > 0 Then
                strQuery += " where " + Join(lst.ToArray(), " and ")
            End If
    
            da = New OleDbDataAdapter(strQuery, Conn)
            ds = New DataSet
            da.Fill(ds, "Dapat")
            DataPPC.DataSource = ds.Tables("Dapat")
            DataPPC.ReadOnly = True
    

    Terima kasih

    British Dhez

    Senin, 17 Februari 2014 04.12

Semua Balasan

  • Hi Rengga

    Pertanyaan ini sudah dijawab di thread berikut.

    http://social.msdn.microsoft.com/Forums/en-US/82f7692a-e35d-4767-aa8e-293855043599/how-to-make-multiple-filter-datagridview-with-checklistbox?forum=vb

    Untuk informasi saja, bahwasanya team forum US dan forum Indonesia menangani case secara bersama sama.

    Tambahan dari saya, kamu hanya harus menambahkan beberapa fungsi if

    Saya bagikan contohnya

     Dim strQuery As String = "Select * From DetailPPC "

            Dim lst As List(Of String) = New List(Of String)

            If CheckedListBox1.CheckedItems.Count > 0 Then

                For Each clItem In CheckedListBox1.CheckedItems

                    lst.Add(" po_number like '" & clItem.ToString() & "%' ")

                Next

            End If

            If CheckedListBox2.CheckedItems.Count > 0 Then

                For Each clItem In CheckedListBox2.CheckedItems

                    lst.Add(" theOtherColumnName2 like '" & clItem.ToString() & "%' ")

                Next

            End If

            If CheckedListBox3.CheckedItems.Count > 0 Then

                For Each clItem In CheckedListBox3.CheckedItems

                    lst.Add(" theOtherColumnName3 like '" & clItem.ToString() & "%' ")

                Next

            End If

            If lst.Count > 0 Then

                strQuery += " where " + Join(lst.ToArray(), " or ")

            End If

     

            da = New OleDbDataAdapter(strQuery, Conn)

            ds = New DataSet

            da.Fill(ds, "Dapat")

            DataPPC.DataSource = ds.Tables("Dapat")

            DataPPC.ReadOnly = True


    Tapi boleh minta bantuan kamu untuk memposting solusi untuk masalah kamu diatas di thread ini

    Kita tunggu jawabannya

    Terima kasih


    Andy Nugraha

    TechNet Community Support



    Jumat, 14 Februari 2014 01.52
    Moderator
  • Maaf coding belum bekerja sesuai yang saya harapkan gan, karena coding masih sama seperti sebelumnya .

    ini hasil apabila saya debug. yang saya inginkan "Multiple Filter" , agar lebih spesifik lagi  , sesuai yang saya pilih.

    Terima Kasih sebelumnya mas Andy Nugraha, saya tunggu modifynya mas . 

    BRG

    Rengga

    Jumat, 14 Februari 2014 02.31
  • Hi Rengga

    Hanya menambahkan kondisi "and" seperti pada kode dibawah

    Dim strQuery As String = "Select * From DetailPPC "
            Dim lst As List(Of String) = New List(Of String)
            If CheckedListBox1.CheckedItems.Count > 0 Then
                Dim lst1 As List(Of String) = New List(Of String)
                For Each clItem In CheckedListBox1.CheckedItems
                    lst1.Add(" po_number like '" & clItem.ToString() & "%' ")
                Next
                lst.Add(Join(lst1.ToArray(), " or "))
            End If
            If CheckedListBox2.CheckedItems.Count > 0 Then
                Dim lst1 As List(Of String) = New List(Of String)
                For Each clItem In CheckedListBox2.CheckedItems
                    lst1.Add(" theOtherColumnName2 like '" & clItem.ToString() & "%' ")
                Next
                lst.Add(Join(lst1.ToArray(), " or "))
            End If
            If CheckedListBox3.CheckedItems.Count > 0 Then
                Dim lst1 As List(Of String) = New List(Of String)
                For Each clItem In CheckedListBox3.CheckedItems
                    lst1.Add(" theOtherColumnName3 like '" & clItem.ToString() & "%' ")
                Next
                lst.Add(Join(lst1.ToArray(), " or "))
            End If
            If lst.Count > 0 Then
                strQuery += " where " + Join(lst.ToArray(), " and ")
            End If
    
            da = New OleDbDataAdapter(strQuery, Conn)
            ds = New DataSet
            da.Fill(ds, "Dapat")
            DataPPC.DataSource = ds.Tables("Dapat")
            DataPPC.ReadOnly = True
    

    Terima kasih

    British Dhez

    Senin, 17 Februari 2014 04.12