GridView(Izgara Görünüm) Satır Üzerinde Güncelleme(Update) ve Silme(Delete) İşlemleri

Eyl 06, 2013

GridView, veri tabanından gelen verilerin düzenli bir şekilde kullanıcı ekranında görüntülenmesini sağlar. Asp.NET’ten önce verilerin liste halinde görüntülenmesi için tablolar kullanılırdı. Asp.NET 1.0 ve 1.1  ile geliştirilen Web uygulamalarında ise veri kontrol nesnesi olan DataGrid kullanılıyordu. Datagrid ile birlikte çeşitli veri kaynaklarından çekilen veriler çok kolay bir şekilde listelenebiliyordu. Asp.NET 2.0 ile birlikte DataGrid yerini daha gelişmiş bir kontrol olan GridView ‘a bıraktı.

GridView’ın öne çıkan bazı özellikleri:

  • Yeni veri kaynağı kontrollerini destekler.
  • Mobil ve diğer uygulamalarla uyumluluğu fazladır.
  • Hiç kod yazmadan gridview üzerinde sayfalama ve sıralama işlemleri yapılabilir.
  • Hiç kod yazmadan silme ve güncelleme işlemleri yapılabilir.
  • Şablonlar ile çalışma özelliği oldukça gelişmiştir.

Uygulama:

  1. Sayfada görüntülenmesi istenilen veriler Gridview kontrolü içerisinde kullanıcıya yansıtılacağı için bu kontrol sayfanın hangi bölgesinde kullanılmak isteniyorsa o bölgeye eklenir. Visual Studio’nun dizayn bölümündeki  araç kutusundan sürükle bırak yöntemiyle ya da kaynak bölümünden GridView kodu elle yazılarak eklenebilir.

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"       OnRowDeleting="GridView1_Sil" OnSelectedIndexChanging="GridView_Duzenle">
        <Columns>
            <asp:BoundField DataField="id" HeaderText="Id" SortExpression="id" Visible="false" />
            <asp:BoundField DataField="ad" HeaderText="Ad" SortExpression="ad" />
            <asp:BoundField DataField="soyad" HeaderText="Soyad"
                                     SortExpression="soyad" />
            <asp:BoundField DataField="bolum" HeaderText="Bölüm" 
                                     SortExpression="bolum" />
            <asp:BoundField DataField="girisYili" HeaderText="GirişYılı"
                                     SortExpression="girisYili" />
            <asp:BoundField DataField="verilenKredi" HeaderText="VerilenKredi"
                                     SortExpression="verilenKredi" />
            <asp:BoundField DataField="zorunluKredi" HeaderText="ZorunluKredi"
                                     SortExpression="zorunluKredi" />
            <asp:CommandField DeleteText="Sil" SelectText="Seç"
                                           ShowDeleteButton="True"ShowSelectButton="True" />
        </Columns> 
    </asp:GridView>

  2. Veritabanı ile bağlantı sağlanırken GridView’ın DataKeyNames(Anahtar Veri İsimleri) özelliği kullanılır.

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                          DataKeyNames="id">

  3. GridView ile veritabanı arasındaki bağlantı LinqToSQL teknolojisi ile sağlanmıştır. "gridDoldur" metodu veritabanındaki bilgileri alır ve kullanıcıya sunar.

    public void gridDoldur()
    {
        DataTable dt = new DataTable();
        SqlConnection connection = new SqlConnection
                                  ("DataSource=.\\;InitialCatalog=hostname;
                                    Integrated Security=True");

          try
          {
              connection.Open();
              string sqlStatement = "SELECT id,ad,soyad,bolum,
                                     girisYili,verilenKredi,zorunluKredi,
                                     silindi FROM Ogrenci
                                     where silindi = 0";
              SqlCommand sqlCmd = new SqlCommand(sqlStatement, connection);
              SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

              sqlDa.Fill(dt);

                   if (dt.Rows.Count > 0)
                   {
                       GridView1.DataSource = dt;
                       GridView1.DataBind();
                   }
          }
          
          catch (System.Data.SqlClient.SqlException ex)
          {
               string msg = "Getirme Hatası: ";
               msg += ex.Message;
               throw new Exception(msg); 
          }
          
          finally
              {
                   connection.Close();
              }
    }

     

  4. GridView üzerindeki silme ve seçme işlemlerini gerçekleştirecek butonların gözükmesi için GridView kontrolü içerisine aşağıdaki kod yazılır.

    <asp:CommandField DeleteText="Sil" SelectText="Seç" ShowDeleteButton="True"
                                   ShowSelectButton="True" />

  5. Sil ve seç düğmesi tıklandığında çalışacak olan kod ise aşağıdaki gibidir.

    protected void GridView1_Sil(object sender, GridViewDeleteEventArgs e)
    {
        Guid id =(Guid)GridView1.DataKeys[e.RowIndex].Values[0];
        SqlConnection conn = new SqlConnection("Data Source=.\\;
                                                Initial Catalog=hostname;
                                                Integrated Security=True; 
                                                Asynchronous 
                                                Processing=true");
        conn.Open();
        SqlCommand command = new SqlCommand("UPDATE Ogrenci SET 
                                             silindi=1 where
                                             id ='" +id.ToString()+
                                             "'" , conn);
        command.ExecuteReader() ;

            gridDoldur();
    }

    protected void GridView_Duzenle(object sender, GridViewSelectEventArgs e)
    {
        Guid id = (Guid)GridView1.DataKeys[e.NewSelectedIndex].Values[0];

        SqlConnection conn = new SqlConnection("Data Source=.\\;
                                                Initial Catalog=hostname;
                                                Integrated Security=True; 
                                                Asynchronous 
                                                Processing=true");
        conn.Open();

            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter
                                    ("SELECT ad,soyad,bolum,
                                      girisYili,verilenKredi,
                                      zorunluKredi FROM Ogrenci where 
                                      id='"+id.ToString()+"'",conn);
            da.SelectCommand.ExecuteNonQuery();
            da.Fill(dt);
            tbAd.Text = dt.Rows[0]["ad"].ToString();
            tbSoyad.Text = dt.Rows[0]["soyad"].ToString();
            tbBolum.Text = dt.Rows[0]["bolum"].ToString();
            tbGirisYili.Text = dt.Rows[0]["girisYili"].ToString();
            tbVerilenKredi.Text = dt.Rows[0]["verilenKredi"].ToString();
            tbZorunluKredi.Text = dt.Rows[0]["zorunluKredi"].ToString();
            OgrenciBilgi.Visible = true; 
            ViewState["id"] = id;
    }
     
  6. GridView_Duzenle metodu seçilen kişinin özelliklerini textBox’lara yazdırır. Gerekli düzenlemeler yapıldıktan sonra güncelleme düğmesine basıldığında veritabanı ile ilgili bağlantıyı güncelleme düğmesi kurar ve bilgi değişikliklerini gerçekleştirir.

    protected void lbGuncelle_OnClick(object sender, EventArgs e)
    {
        Guid id = (Guid)(ViewState["id"]);
        SqlConnection conn = new SqlConnection("DataSource=.\\;
                                                InitialCatalog=hostname;
                                                Integrated Security=True");
        conn.Open();
        string commandText = String.Format(@"UPDATE Ogrenci SET
                                           ad = '{0}', soyad = '{1}',
                                           girisYili = '{2}',
                                           bolum = '{3}',
                                           verilenKredi = '{4}',
                                           zorunluKredi = '{5}'
                                           where id='"
                                           + id.ToString() + "'",
                                           tbAd.Text,tbSoyad.Text,
                                           tbGirisYili.Text,
                                           tbBolum.Text,
                                           tbVerilenKredi.Text,
                                           tbZorunluKredi.Text);
            
            SqlCommand command = new SqlCommand(commandText,conn);
            command.ExecuteReader();
            gridDoldur();
            OgrenciBilgi.Visible = false;

  7. Projenin tamamlanmış hali aşağıdaki gibidir.