![]() | |||
Asp.Net 2.0 GridView Kontrolünde Dinamik Update,Delete İşlemleri | 31.08.2008 02:54:00 | ||
| Kategori : ASP.NET Özet : Bu makalemizde, AspNet 2.0 ile birlikte gelen ve yeni kontrollerden birisi olan GridView kontrolü üzerinde, veri güncelleme ve veri silme gibi işlemlerin programatik olarak nasıl yapılacağını incelemeye çalışacağız. | |||
Asp.Net 2.0 GridView Kontrolünde Dinamik Update,Delete İşlemleri Bu makalemizde, AspNet 2.0 ile birlikte gelen ve yeni kontrollerden birisi olan GridView kontrolü üzerinde, veri güncelleme ve veri silme gibi işlemlerin programatik olarak nasıl yapılacağını incelemeye çalışacağız. Gridview veri kaynağından gelen verilerin düzenli bir şekilde istemci ekranında görüntülenmesini sağlar.Asp.Net ten önce verilerin liste halinde görüntülenmesi için Table kullanırdık.Asp.Net 1.0 ve 1.1 ile geliştirdiğimiz web uygulamalarımızda ise çok kullanışlı bir veri kontrol nesnesi olan Datagrid’i kullanırdık.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 kontrolünün öne çıkan özelliklerini sayacak olursak;
Yeni bir kontrol olan gridview sqldatasource ile birlikte kullanıldığında tek satır kod yazmadan tamamen otomatik olarak update,delete,insert işlemleri yapılabiliyor fakat bazı sayfalarda gridview için sorgulara bağlı olarak birden fazla datasource kullanabiliyoruz.Böyle durumlarda gridview üzerinde insert,update,delete işlemlerimizi dinamik olarak yapmak zorundayız.Gridview üzerinde update ve delete işlemleri sırasında RowEditing,RowCancelingEdit,RowUpdating,ve RowDeleting eventları tetiklenir.Bizim amacımız bu eventları code-behind tarafında yakalamak olacak.Bu eventları kullanacağımız bir senaryo düşünerek uygulamamıza başlıyalım.Projemizde personel bilgilerinin tutulduğu basit bir veritabanımız olsun.Bu veritabanına ait Table’ımızı tasarlıyalım.
Kaldığımız yerden devam edecek olursak eklediğimiz bounfield alanlarını tek tek templatefield’a çevirerek bazı değişiklikler yapacağız.Bunun için column’ı seçip Convert this field into a TemplateField linkine tıklıyoruz.Column’ları TemplateField’a çevirdikten sonra Gridview’ın task panelinden Edit Templates alanına girip cinsiyet sütununun EditItemTemplate bölümündeki label’ı silip cinsiyet seçimi için bir Dropdownlist kontrolü ekliyoruz.Daha sonra tarih sütununun EditItemTemplate alanındaki textbox kontrolüne ajax control toolkit extenderlarından Calender Extender controlünü ekliyoruz.Databinding ifadesi olarak Bind("dogumtarih", "{0:dd/MM/yyyy}") yazıyoruz.Bind ifadesinde ilk parametremiz referans sütunu,ikinci parametremiz formatlama.Bu işlemleri tamamladıktan sonra unutmadan son olarak sayfamızda ajax controlü kullandığımız için sayfamıza bir tane ScriptManeger ekliyoruz.Bu işlemleri tamamladıktan sonra artık code-behind tarafında kodlamaya geçebiliriz.
İlk olarak Page_Load da veritabanından verilerimizi çekip gridview e bağlıyoruz.Daha sonra RowEditing,RowCancelingEdit,RowUpdating, ve RowDeleting eventlarını code-behind tarafında yakalıyoruz. string cnct = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["grid"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) grid_fill(); } private void grid_fill() { SqlConnection con = new SqlConnection(cnct); if(con.State==ConnectionState.Closed) con.Open(); SqlCommand com=new SqlCommand(); com.Connection = con; com.CommandType=CommandType.StoredProcedure; com.CommandText="usr_select"; SqlDataReader dr=com.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(dr); GridView1.DataSource = dt; GridView1.DataBind(); }
***RowEditing eventı ile Edit işlemi yani seçilen satırdaki verileri düzenleme için satırı aktif hala getiriyoruz protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; GridView1.DataBind(); grid_fill(); }
***RowCancelingEdit eventı ile güncelleme işleminin iptalını yapıyoruz
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; GridView1.DataBind(); grid_fill(); }
***RowDeleting eventı ile seçili satırı siliyoruz protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string gidtcno = GridView1.DataKeys[e.RowIndex].Values[0].ToString(); ///Gridview ın DataKeyNames property sine parametre olarak "tcno" vermiştik.DataKeys ile seçilen satırın değerini yani "tcno" sunu alıyoruz. SqlConnection con = new SqlConnection(cnct); if (con.State == ConnectionState.Closed) con.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "usr_delete"; cmd.Parameters.AddWithValue("@tcno",gidtcno); cmd.ExecuteNonQuery(); grid_fill(); } ***RowUpdating event ı ile seçilen satırı güncelliyoruz. ***Gridview ın DataKeyNames propertysine parametre olarak tcno yazıyoruz. protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { SqlConnection con = new SqlConnection(cnct); if (con.State == ConnectionState.Closed) con.Open(); int id = e.RowIndex; string tcnogrid = GridView1.DataKeys[e.RowIndex].Value.ToString(); TextBox gridtcno = (TextBox)GridView1.Rows[id].FindControl("Textbox1"); ////Güncelleme için Gridview deki EditItemTemplatefield alanında bulunan Textbox a yazılan yeni değeri alıyoruz. TextBox gridadi = (TextBox)GridView1.Rows[id].FindControl("Textbox2"); TextBox gridsoyadi = (TextBox)GridView1.Rows[id].FindControl("Textbox3"); DropDownList gridcins = (DropDownList)GridView1.Rows[id].FindControl("DropDownList1"); TextBox griddgtarh = (TextBox)GridView1.Rows[id].FindControl("Textbox5"); ///////// SqlCommand comd = new SqlCommand(); comd.Connection = con; comd.CommandType = CommandType.StoredProcedure; comd.CommandText = "usr_update"; comd.Parameters.AddWithValue("@tcno", tcnogrid); comd.Parameters.AddWithValue("@updttcno", gridtcno.Text); comd.Parameters.AddWithValue("@adi", gridadi.Text); comd.Parameters.AddWithValue("@soyadi", gridsoyadi.Text); comd.Parameters.AddWithValue("@cinsiyet", gridcins.Text); comd.Parameters.AddWithValue("@dtarih", griddgtarh.Text); comd.ExecuteNonQuery(); grid_fill(); GridView1.EditIndex = -1; GridView1.DataBind(); } --------- Ve uygulamamızın son hali......
| |||
Yazgelistir.com | |||