VB.NET DataGridView yineleme

sergenk (1) 9 yıl önce sordu

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

 

Toplam 1 cevap


alattin (17125) 9 yıl önce cevapladı

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

 

sergenk 9 yıl önce

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.

alattin 9 yıl önce

sizin kodları biraz değiştirdim. test ettim sorunsuz çalışıyor. Örnek SQL ile siz bunu kendinize uyarlayın.