VB.NET DataGridView yineleme

0

Form'da 2 adet datagridview var. DataGridView1'de id ad soyad diye sütunları listeledim ve herhangi bir ismi seçtiğimde datagridview2'ye o id'ye bağlı bilgileri aktarıyorum fakat bu işlem 1 kere oluyor yani başka bi id ye tıkladığımda 2. Datagrid yenilenmiyor. Bunu nasıl düzeltebilirim? 

 

Sub listele()
        koopTablo.Clear()
        makbuzTablo.Clear()
        bag.Open()
        adtr = New OleDbDataAdapter("select plaka,adi,soyadi From koop", bag)
        adtr.Fill(koopTablo)
        DataGridView1.DataSource = koopTablo
        DataGridView1.Columns(0).HeaderText = "PLAKA"
        DataGridView1.Columns(1).HeaderText = "Adı"
        DataGridView1.Columns(2).HeaderText = "Soyadı"
        DataGridView1.Refresh()

        bag.Close()
        adtr.Dispose()
    End Sub



    Sub sec()

        Try

            If DataGridView1.CurrentRow.Cells(0).Value.ToString().Trim() <> "" Then
                
                bag.Open()
                kmt.Connection = bag
                adtr = New OleDbDataAdapter("SELECT Makbuzno,Donem,Tarih,Miktar from Makbuz WHERE PLAKA='" & DataGridView1.CurrentRow.Cells(0).Value.ToString() & "'", bag)
                adtr.Fill(makbuzTablo)
                DataGridView2.DataSource = makbuzTablo
                DataGridView2.Refresh()
                kmt.ExecuteNonQuery() 
                listele()

                bag.Close()
                kmt.Dispose()
            End If
        Catch

        End Try
    End Sub



Private Sub Form5_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        listele()
        sec()
    End Sub

 

sergenk sergenk (1)
10 yıl önce sordu

    Toplam 1 Cevap


    0

    Sec() metodunu Form_Load olayında kullanmamalısın.

    DataGrivView1 içinde herhangi bir row seçildiğinde tekrardan Sec() metodunu çağırmalısın.

    Bunun için şunları yap:

    1. DataGrivView1 özelliklerinden SelectionMode=FullRowSelect, MultiSelect=False ve ihtiyacın yoksa ReadOnly=True olarak ayarla
    2. Daha sonra DataGrivView1 olaylarında (Events) Cell Click olayını bul. Yanındaki boşluğa çift tıkla.
    3. Bu sana bir DataGridView1_CellClick() olayı oluşturacaktır.
    4. Bu olayın içinde de Sec() metodunu çağır
      Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
    Sec()
        End Sub

     Böylelikle DataGridView1 içinde bir kayıt tıklandığında Gatagridview2 içindeki veriler güncellenecektir.

    Aşağıda SQL üzerinde sizin kodlarınızı biraz düzenleyerek örnek yazdım. Test ettim sorunsuz çalışıyor.

    Yaklaşık 6-7 senedir hiç VB.Net kullanmadım.  Uzun zaman sonra Vb.Net kullanmak ilginc oldu.

    Imports System.Data.SqlClient
    Public Class Form1
        Dim bag As New SqlConnection("server=.\SqlExpress; Integrated Security=SSPI; Database=Sample")
        Dim adtr As New SqlDataAdapter()
        Dim koopTablo As New DataSet
        Dim kmt As New SqlCommand()
        Dim makbuzTablo As New DataSet
    
        Sub Listele()
            adtr = New SqlDataAdapter("select plaka As PLAKA,adi as AD,soyadi as SOYAD From koop", bag)
            adtr.Fill(koopTablo)
            DataGridView1.DataSource = koopTablo.Tables(0)
        End Sub
    
    
    
        Sub Sec()
            makbuzTablo.Tables.Clear()
            If DataGridView1.CurrentRow.Cells(0).Value.ToString().Trim() <> "" Then
                adtr = New SqlDataAdapter("SELECT Makbuzno,Donem,Tarih,Miktar from Makbuz WHERE PLAKA='" & DataGridView1.CurrentRow.Cells(0).Value.ToString() & "'", bag)
                adtr.Fill(makbuzTablo)
                DataGridView2.DataSource = makbuzTablo.Tables(0)
            End If
    
        End Sub
    
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Listele()
        End Sub
    
        Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
            Sec()
        End Sub
    End Class

     

    alattin alattin (17137)
    10 yıl önce cevaplandı

    • Söylediğiniz işlemleri yaptım fakat yine de aynı. İlk tıkladığımda çalışıyor 2. de başka bir şeye tıkladığımda çalışmıyor. sergenk 10 yıl önce
    • sizin kodları biraz değiştirdim. test ettim sorunsuz çalışıyor. Örnek SQL ile siz bunu kendinize uyarlayın. alattin 10 yıl önce
    üyelik gerektirir

    Cevap yazabilmek için üye girişi yapmalısınız.

    Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
    uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol