VB.NET DataGridView yineleme

sergenk (1) 10 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 (17137) 10 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 10 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 10 yıl önce

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