ASP.net ile checkboxdan seçilen kayıtları databaseden silme
Bu yazımızda ASP.net ile seçime bağlı silme uygulaması örneğini yapıyor olacağız. Örneğin Hotmail ,gmail gibi sitelerde gelen kutusundan silmek istediğimiz maillerin yanındaki checkbox ları seçip sil butonuna basarız ve tek seferde tüm seçilen mailleri sileriz. Bu uygulama veritabanı olarak Access kullanılacak ve senaryo gereği veritabanında kayıtlı olan mailleri listeleyip isteğimiz mailleri seçip sileceğiz. İl olarak veritabanından verileri çekelim ve bir dataliste aktaralım .
Default.aspx
<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<asp:CheckBox ID="c" runat="server" /> <asp:Label ID="l" runat="server" Text='<%# Eval("Mail") %>'></asp:Label>
<asp:Label runat="server" Visible="false" ID="lblid" Text='<%# Eval("ID") %>'></asp:Label>
</ItemTemplate>
</asp:DataList>
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Seçilenleri Sil" />
Şimdi de kodları aşağıdaki gibi yazalım
(sayfamıza using System.Data.OleDb ve using System.Data name spacelerini eklemyi untmuyoruz tabi)
Default.aspx.cs
OleDbConnection bg = new OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=" + HttpContext.Current.Server.MapPath("~/App_Data/Kobay.mdb"));
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
VeriGetir();//sayfa ilk açıldığında verigetir methodu çağırılıyor
}
}
private void VeriGetir()
{
bg.Open();
OleDbCommand cmd = new OleDbCommand("Select * FROM Mail", bg);//mail tablosundan tüm mailler çekiliyor
OleDbDataAdapter da = new OleDbDataAdapter(cmd);//adapter e atılıyor
DataTable dt = new DataTable("tbl");//datatable örneği oluşturuluyor
da.Fill(dt);// veriler tablo ya dolduruluyor
DataList1.DataSource = dt.DefaultView;//datalist e dolduruluyor
DataList1.DataBind();
bg.Close();
}
protected void Button1_Click(object sender, EventArgs e)//sil butonu tıklandığında
{
ArrayList dizi=new ArrayList();//bir arraylis dizi alınıyor
foreach (DataListItem item in DataList1.Items)//datalistin kayıt sayı kadar bir döngü oluşturuluyor
{
CheckBox c = (CheckBox)item.FindControl("c");//her satırdaki checkbox ın değeri bir checkbox örneği oluturulup atanıyor
if (c.Checked)//alınan checkbox seçili ise
{
Label lbl = (Label)item.FindControl("lblid");// o satırdaki Labeldeki id değeri aynı mantıkla alınıyor
dizi.Add(lbl.Text);//bu alınan değer diziye ekleniyor
}
}
for (int i = 0; i < dizi.Count; i++)//dizinin eleman sayısı kadar bir döngü oluşturuluyor
{
KayitSil(dizi[i].ToString());//her id değeri kayıt sil methoduna parametre oalrak gönderiliyor
}
VeriGetir();//sayfadaki mailler yeniden listleniyor
}
private void KayitSil(string p)//gelen id değeri alınıyor
{
int id = Int32.Parse(p);//integer e dönüştülüyor
bg.Open();//bağlantı açılıyor
OleDbCommand cmd = new OleDbCommand("delete FROM Mail Where ID=" + id + " ", bg);//veritabanından gelen id ye ayit kayıt siliniyor
cmd.ExecuteNonQuery();//bitti ....
bg.Close();
}
Kolay Gelsin.