ListView Nesnesinde Çoklu Seçili CheckBox ların Veritabanından Silinmesi
Formumuza 1 adet ListView nesnesi 1 adet Button ekleyin.
İlk önce Access veritabanına bağlanıp, verilerimizi listview nesnesine gösterimini sağlıyoruz.(Şekil 1)
Şekil 1
ListView1.CheckBoxes = True kod parçası yardımıyla Listview nesnesinde checkboxlu
sütun oluşturuyoruz.
Son olarak, aşağıda belirtilen sql sorgusuylada seçili checkbox satırlarını siliyoruz.
Bu arada;
ListView1.CheckedItems.Count komutu ile
seçili satır sayısını;
ListView1.CheckedItems(i).Text ile de
seçili checkbox ın satır nosunu alıyoruz.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListView1.View = View.Details
ListView1.GridLines = True
ListView1.CheckBoxes = True
ListView1.Columns.Add("id", 100, HorizontalAlignment.Center)
ListView1.Columns.Add("Ad", 100, HorizontalAlignment.Center)
ListView1.Columns.Add("Soyad", 100, HorizontalAlignment.Center)
ListView1.Columns.Add("Ogrenim", 100, HorizontalAlignment.Center)
ListView1.Items.Clear()
Dim baglan As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=veri.mdb;")
Dim adp As New OleDb.OleDbDataAdapter()
adp.SelectCommand = New OleDb.OleDbCommand("Select * From personel", baglan)
baglan.Open()
Dim ds1 As New DataSet()
adp.Fill(ds1)
If baglan.State = ConnectionState.Open Then
’veritabanına baglandıgında buton arkaplanı yeşil
btnSil.BackColor = Color.Green
Else
’veritabanına baglantı yoksa buton arkaplanı kırmızı
btnSil.BackColor = Color.Red
End If
baglan.Close()
Dim item As New ListViewItem
For Each row As DataRow In ds1.Tables(0).Rows
item = ListView1.Items.Add(row.Item("id"))
item.SubItems.Add(row.Item("Ad"))
item.SubItems.Add(row.Item("Soyad"))
item.SubItems.Add(row.Item("Ogrenim"))
Next
End Sub
Private Sub btnSil_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSil.Click
Dim i As Integer
Dim str(ListView1.CheckedItems.Count), sorgu As String
Dim secim As ListViewItem = ListView1.CheckedItems(0)
For i = 0 To ListView1.CheckedItems.Count - 1
str(i) = ListView1.CheckedItems(i).Text
sorgu = "DELETE FROM personel WHERE id = ’" & str(i).ToString & "’"
Dim baglan As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=veri.mdb;")
Dim adp As New OleDb.OleDbDataAdapter()
Dim cmd As OleDb.OleDbCommand
cmd = New OleDb.OleDbCommand(sorgu, baglan)
adp.DeleteCommand = cmd
Try
baglan.Open()
Dim ds As New DataSet()
Dim dt As DataTable
cmd.ExecuteNonQuery()
’MsgBox("Seçili Kayıt Silindi... Bahadır ŞAHİN")
adp.Update(ds, "personel")
ds.Tables("personel").Reset()
adp.Fill(ds, "personel")
dt = ds.Tables("personel")
Catch ex As Exception
’MessageBox.Show("Bahadır ŞAHİN Hata Bildirimi : " & vbCrLf & ex.Message, "Hata Mesajı", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
baglan.Close()
End Try
Next
sayfayenile()
End Sub
Sub sayfayenile()
ListView1.Items.Clear()
Dim baglan As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=veri.mdb;")
Dim adp As New OleDb.OleDbDataAdapter()
adp.SelectCommand = New OleDb.OleDbCommand("Select * From personel", baglan)
baglan.Open()
Dim ds1 As New DataSet()
adp.Fill(ds1)
If baglan.State = ConnectionState.Open Then
’veritabanına baglandıgında buton arkaplanı yeşil
btnSil.BackColor = Color.Green
Else
’veritabanına baglantı yoksa buton arkaplanı kırmızı
btnSil.BackColor = Color.Red
End If
baglan.Close()
Dim item As New ListViewItem
For Each row As DataRow In ds1.Tables(0).Rows
item = ListView1.Items.Add(row.Item("id"))
item.SubItems.Add(row.Item("Ad"))
item.SubItems.Add(row.Item("Soyad"))
item.SubItems.Add(row.Item("Ogrenim"))
Next
End Sub
End Class