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)
9 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 (17125)
    9 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 9 yıl önce
    • sizin kodları biraz değiştirdim. test ettim sorunsuz çalışıyor. Örnek SQL ile siz bunu kendinize uyarlayın. alattin 9 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