Gridview İle Çoklu Kayıt Silme

Çok fazla kayıt olan bir veri listesinde birden fazla kayıt silinmek istendiğinde bunları tek tek silmek zaman alır. Bunun için kullanıcının istediği kayıtları seçip silebilmesini sağlamamız gerekir. Şimdi PersonelDB veritabanında PersonelBilgi adlı bir tablo oluşturalım

.


Uygulamayı hem SqldataSource hem de Entity Model ile yapacağız.

1.SqldataSource ile;
Webform oluşturup Gridview ekleyelim. Design sekmesine tıklayıp Gridviewe hazırladığımız veritabanını aşağıdaki şekilde gösterildiği gibi Choose Data Source ve New data source diyerek  bağlayalım. Bağlama işleminin nasıl olduğunu şuradan öğrenebilirsiniz.

Webformumuzun tasarımı;

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function check_uncheck(Val) {
            var ValChecked = Val.checked;
            var ValId = Val.id;
            var frm = document.forms[0];
            for (i = 0; i < frm.length; i++) {
                if (this != null) {
                    if (ValId.indexOf('HepsiniSec') != -1) {
                        if (ValChecked)
                            frm.elements[i].checked = true;
                        else
                            frm.elements[i].checked = false;
                    }
                    else if (ValId.indexOf('kontrolKutu') != -1) {
                        if (frm.elements[i].checked == false)
                            frm.elements[1].checked = false;
                    }
                } 
            } 
        } //
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server"
                AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="SqlDataSource1" BackColor="White"
                BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="4"
                GridLines="Horizontal"
                Width="100%" Font-Names="Calibri">
                <AlternatingRowStyle BackColor="#F7F7F7" />
                <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
                <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" HorizontalAlign="Left" />
                <Columns>
                    <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:CheckBox ID="HepsiniSec" runat="server" onClick="return check_uncheck(this);" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="kontrolKutu" runat="server" onClick="return check_uncheck (this );" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="id" HeaderText="id" SortExpression="id" Visible="true" />
                    <asp:BoundField DataField="SicilNo" HeaderText="Sicil No" SortExpression="SicilNo" />
                    <asp:BoundField DataField="AdSoyad" HeaderText="Adı Soyadı" SortExpression="AdSoyad" />
                    <asp:BoundField DataField="Adres" HeaderText="Adres" SortExpression="Adres" />
                    <asp:BoundField DataField="Maas" HeaderText="MAAŞ" SortExpression="Maas" />
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:PersonelDBConnectionString %>" SelectCommand="SELECT * FROM [PersonelBilgi]" DeleteCommand="DELETE FROM [PersonelBilgi] WHERE [id] = @id" InsertCommand="INSERT INTO [PersonelBilgi] ([SicilNo], [AdSoyad], [Adres], [Maas], [DepartmanID]) VALUES (@SicilNo, @AdSoyad, @Adres, @Maas, @DepartmanID)" UpdateCommand="UPDATE [PersonelBilgi] SET [SicilNo] = @SicilNo, [AdSoyad] = @AdSoyad, [Adres] = @Adres, [Maas] = @Maas, [DepartmanID] = @DepartmanID WHERE [id] = @id">
                <DeleteParameters>
                    <asp:Parameter Name="id" Type="Int32" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="SicilNo" Type="String" />
                    <asp:Parameter Name="AdSoyad" Type="String" />
                    <asp:Parameter Name="Adres" Type="String" />
                    <asp:Parameter Name="Maas" Type="Int32" />
                    <asp:Parameter Name="DepartmanID" Type="Int32" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="SicilNo" Type="String" />
                    <asp:Parameter Name="AdSoyad" Type="String" />
                    <asp:Parameter Name="Adres" Type="String" />
                    <asp:Parameter Name="Maas" Type="Int32" />
                    <asp:Parameter Name="DepartmanID" Type="Int32" />
                    <asp:Parameter Name="id" Type="Int32" />
                </UpdateParameters>
            </asp:SqlDataSource>
            <asp:Button runat="server" Text="Seçilenleri Sil" ID="btnsil" OnClick="btnsil_Click" />
 
        </div>
    </form>
</body>
</html>
Ekran görüntümüz;

 Şimdi kodlamaya geçelim; Seçilenleri Sil butonumuzun kodu;

protected void btnsil_Click(object sender, EventArgs e)
 {
  string secilenler = "";
  foreach (GridViewRow kayitsatiri in GridView1.Rows)
   {
    CheckBox kutu = (CheckBox)kayitsatiri.FindControl("kontrolKutu");
      if (kutu != null & kutu.Checked)
       {
          secilenler += kayitsatiri.Cells[1].Text + ",";
       }
   }
 string sqlkomut = "DELETE FROM PersonelBilgi WHERE id IN(" + secilenler.Remove(secilenler.Length - 1, 1) + ")";
 SqlDataSource1.DeleteCommand = sqlkomut;
 SqlDataSource1.Delete();
 }
2.Entity Data Model ile;Modelin nasıl oluşturulduğuna buradan bakabilirsiniz
Webformumuz;

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function check_uncheck(Val) {
            var ValChecked = Val.checked;
            var ValId = Val.id;
            var frm = document.forms[0];
            for (i = 0; i < frm.length; i++) {
                if (this != null) {
                    if (ValId.indexOf('HepsiniSec') != -1) {
                        if (ValChecked)
                            frm.elements[i].checked = true;
                        else
                            frm.elements[i].checked = false;
                    }
                    else if (ValId.indexOf('kontrolKutu') != -1) {
                        if (frm.elements[i].checked == false)
                            frm.elements[1].checked = false;
                    }
                }  
            }  
        }  
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server"
                AutoGenerateColumns="False" DataKeyNames="id" BackColor="White"
                BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="4"
                GridLines="Horizontal"
                Width="100%" Font-Names="Calibri">
                <AlternatingRowStyle BackColor="#F7F7F7" />
                <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
                <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" HorizontalAlign="Left" />
                <Columns>
                    <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:CheckBox ID="HepsiniSec" runat="server" Text="Tümü" onClick="return check_uncheck(this);" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="kontrolKutu" runat="server"  onClick ="return check_uncheck (this );" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="id" HeaderText="id" SortExpression="id" Visible="true" />
                    <asp:BoundField DataField="SicilNo" HeaderText="Sicil No" SortExpression="SicilNo" />
                    <asp:BoundField DataField="AdSoyad" HeaderText="Adı Soyadı" SortExpression="AdSoyad" />
                    <asp:BoundField DataField="Adres" HeaderText="Adres" SortExpression="Adres" />
                    <asp:BoundField DataField="Maas" HeaderText="MAAŞ" SortExpression="Maas" />
                </Columns>
            </asp:GridView>
            <asp:Button runat="server" Text="Seçilenleri Sil" ID="btnsil" OnClick="btnsil_Click" />
        </div>
    </form>
</body>
</html>
Kod bölümümüz ise;

    PersonelDBEntities db = new PersonelDBEntities();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridView1.DataSource = db.PersonelBilgi.ToList();
            GridView1.DataBind();
        }
    }

    protected void btnsil_Click(object sender, EventArgs e)
    {
        int secilenler = 0;
        foreach (GridViewRow kayitsatiri in GridView1.Rows)
        {
            CheckBox kutu = (CheckBox)kayitsatiri.FindControl("kontrolKutu");
            if (kutu != null & kutu.Checked)
            {
                secilenler = Convert.ToInt32(kayitsatiri.Cells[1].Text);
                var silkayit = db.PersonelBilgi.Where(x => x.id == secilenler).FirstOrDefault();
                db.PersonelBilgi.Remove(silkayit);
            }
        }                                                                                                           db.SaveChanges();
GridView1.DataSource = db.PersonelBilgi.ToList(); GridView1.DataBind(); }



Etiketler
Grid Gridview Multi Sql SqlDataSource Entity
Mesaj Yaz