Form üzerinde yer alan DataGridView nesnesinde verileri göstermek çoğu kişi için sıradandır muhtemelen. Eğer DataGridView bileşeni içinde yapılan değişiklikleri kaydetme ya da güncelleme işleminin nasıl yapıldığı ile ilgili bir örnek ihtiyacınız varsa konunun devamı size hitap ediyor.
Öncelikle form üzerine DataGridView bileşeni ve bir buton ekliyoruz. Bileşenlerin isimleri dgvPersonel ve btnGuncelle olarak veriyoruz.
Form başlığına çift tıklayarak Formun Load olayına geçiş yapalım. Örnekte Microsoft Access veritabanını tercih ediyoruz. Bu veritabanına bağlanmak için Formun genelinde geçerli olacak şekilde Connection tanımlamasını yapıyoruz. Ayrıca verileri Formda gösterebilmek için gerekli diğer değişkenleri de tanımlıyoruz.
Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=OrnekVeritabani.mdb") Dim ds As DataSet Dim adp As OleDbDataAdapter Dim cbuilder As OleDbCommandBuilder
Formun Load olayına yazacağımız kodlar ile verileri DataGridView üzerinde göstereceğiz:
Try If cnn.State = ConnectionState.Closed Then cnn.Open() End If adp = New OleDbDataAdapter("SELECT * FROM donemler", cnn) ds = New DataSet() adp.Fill(ds, "Donemler_Tablosu") dgvDonemler.DataSource = ds.Tables(0) Catch ex As Exception MsgBox( "Veritabanı hatası : " & ex.Message ) End Try
3. ve 5. satırlar arasında eğer veritabanına bağlantı kapalı ise açma işlemini yapıyoruz.
7. satırda DataAdapter ile verileri donemler tablosundan çekiyoruz.
8. satırda ise DataSet tanımlaması yapıyoruz. Anahtar olan aslında bu adım. Çünkü normalde hiç DataSet kullanmadan verileri çekip gösterebiliyoruz ancak burada DataSet ile sanal bir tablo içinde verileri saklamış olacağız. Değişiklikler bu sanal tablomuz içinde yapılacak. Eğer kaydetmeye karar verirsek asıl tabloda güncelleme işlemi yapmış olacağız.
9. satırda ise sanal tablomuza "Donemler_Tablosu" ismini vererek verileri doldurma işlemini gerçekleştiriyoruz.
10. satırda ismi dgvDonemler olan DataGridView'in veri kaynağını DataSet'imizin içindeki ilk tablo olarak tanımlıyoruz. Böylelikle veriler artık DataGridView'de gösterilmiş oluyor.
Açıklamaya bilmem gerek var mı ama diğer satırlar yani 1. , 12. , 13. , 14. satırlar ise hata yakalamak için kullandığımız satırlar.
Burada bizim örneğimizde, yapılan değişiklikler btnGuncelle isimli butona basınca veritabanına yansıtılacak. Butona basılmadığı sürece veriler kaydedilmeyecek. Butonun tıklanma olayına aşağıdaki kodları yazıyoruz:
Try cbuilder = New OleDbCommandBuilder(adp) adp.Update(ds, "Donemler_Tablosu") Catch ex As Exception MsgBox(ex.Message) End Try
Tüm güncelleme işlemi 3. ve 4. satırda gerçekleşiyor.
3. satırda CommandBuilder tanımlaması yapılıyor ve parametre olarak bizden bir Adapter nesnesi istiyor. Bizim adapter nesnemize isim olarak adp vermiştik.
4. satırda adp isimli Adapter nesnemizin Update fonksiyonuna/metoduna hangi DataSet'te hangi tabloyu güncelleyeceğimizi söylüyoruz.
Tüm işlemler bu kadar ancak bir butona değilde DataGridView'in CellLeave, CellValueChanged, RowLeave vb. olaylarını da kullanarak güncelleme işlemi yaptırılabilir. Yukarıdaki örnek kodlar gelen soru üzerine Vb.Net ile yazıldı ancak converter.telerik.com gibi sitelerden C# kodlarına çevirme işlemini yaptırabilirsiniz.
Programı çalıştırdıktan sonra DataGridView içindeki verilerde değişiklik yaptıktan sonra Güncelle butonuna bastığınızda güncelleme işlemi gerçekleşecek.