VB.NET DataGridViev İçinde Arama Yapma

20/12/2016, 18:20

Mettleshade

Merhaba.

Ben programımda datagridview içinde arama yapmak istiyorum elimde kod var fakat bi sorun var

TextBoxa girdigim degeri seçtirince sorun olmuyor ama girdigim deger harici olanları gizleyince sorun oluyor.

Sorunlu halini size veriyorum.

Kolay Gelsin.

Özür Dileyerek bir düzeltme yapmak istiyorum.

Projenin içindeki TextBox1 kodundaki kodlar bu şekilde olucak :

Try
           For Each rw As DataGridViewRow In DataGridView1.Rows

               Dim cumle As String
               cumle = rw.Cells(1).Value

               If (cumle.IndexOf(TextBox1.Text, StringComparison.InvariantCultureIgnoreCase) = 0) Then

                   rw.Visible = True

               Else
                   rw.Visible = False


               End If
           Next

       Catch ex As Exception
       End Try

Ve programı her açmanızda veritabanını sıfırlıyor.

kayıtları ekledikten sonra projeden degilde direk exeden açmanızı öneririm.
21/12/2016, 18:03

alpeki99

TextBox1'in TextChanged olayına aşağıdaki kodları ekleyin:

Dim aranacak As String = TextBox1.Text

   Try

     For Each row As DataGridViewRow In DataGridView1.Rows

       If (String.IsNullOrEmpty(row.Cells(1).Value)) Then Exit For

       If row.Cells(1).Value.ToString().Equals(aranacak) Then

         row.Selected = True
         Exit For

       End If

     Next

   Catch ex As Exception

     MessageBox.Show(ex.Message)

   End Try

Form'un Load olayına alttaki kodu ekleyin:

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

Arama kutusuna yazdığınız değer Eğer 1. sütunda yani ad soyad sütununda varsa o satır seçili hale gelecek.

Sorunuza göre bu şekilde cevap verdim ancak eğer veritabanından gelen veriler varsa -ki sizin örnekte var- Sql ile arama yapmak en güzelidir.
21/12/2016, 20:44

Mettleshade

(21/12/2016, 18:03)alpeki99 yazdı: TextBox1'in TextChanged olayına aşağıdaki kodları ekleyin:

Dim aranacak As String = TextBox1.Text

   Try

     For Each row As DataGridViewRow In DataGridView1.Rows

       If (String.IsNullOrEmpty(row.Cells(1).Value)) Then Exit For

       If row.Cells(1).Value.ToString().Equals(aranacak) Then

         row.Selected = True
         Exit For

       End If

     Next

   Catch ex As Exception

     MessageBox.Show(ex.Message)

   End Try

Form'un Load olayına alttaki kodu ekleyin:

DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

Arama kutusuna yazdığınız değer Eğer 1. sütunda yani ad soyad sütununda varsa o satır seçili hale gelecek.

Sorunuza göre bu şekilde cevap verdim ancak eğer veritabanından gelen veriler varsa -ki sizin örnekte var- Sql ile arama yapmak en güzelidir.

Peki hocam sonucu seçtirme degilde sonuç harici verileri gizleme nasıl yapmam gerekiyor ?
22/12/2016, 22:34

alpeki99

Eğer bu yöntem ile gideceksen tavsiye edeceğim bir şey yok çünkü bu şekilde kullanmadığım için çok tecrübem yok. Klasik Ado.Net ya da Entity Framework ile kullanırsan daha kolay yardımcı olabilirim
23/12/2016, 16:25

Mettleshade

(22/12/2016, 22:34)alpeki99 yazdı: Eğer bu yöntem ile gideceksen tavsiye edeceğim bir şey yok çünkü bu şekilde kullanmadığım için çok tecrübem yok. Klasik Ado.Net ya da Entity Framework ile kullanırsan daha kolay yardımcı olabilirim Hocam cahillik işte yeni yeni ögreniyorum
Daha kolay bir şekilde yaptım biraz beynimi kullanarak
Dim dv As DataView = New DataView()
dv.Table = DatabaseDataSet.isimler
dv.RowFilter = "[AdiSoyadi] Like '" & TextBox1.Text & "%'"
DataGridView1.DataSource = dv

Bilmeyenler bilsin
Teşekkür ederim hocam sizide ugraştırdım iyi günler