30/5/2007
Merhaba bir önceki makalemizde sitemizdeki verileri değiştirmeyi incelemiştik. Bu makalemde ise dinamik bir web sitesi kapsamında Expression Web kullanarak siteye yeni bir veri eklemeyi ve bu veriyi silmeyi anlatacağım.
Başlayalım. İlk önce kitapların detaylarını gösterdiğimiz oneBook.aspx sayfasını açıyoruz.
FormView1’in içindeki LoginView1’de Kitap Güncelle ile Kitap Listesine dön linkleri arasına Toolbox>ASP.NET Controls>Standard altından LinkButton’u sürükleyip bırakıyoruz. Bu bizim yeni kitap ekleme linkimiz olacak.
LinkButton seçiliyken tag properties’inde değişiklikler yapıyoruz. CommandName’in New olması dışındakileri isteğinize göre değiştirebilirsiniz.
Şu ana kadar yaptıklarımızı kontrol edelim. Siteye login oluyoruz. Listeden bir kitabın detay sayfasına gidiyoruz. Evet. Yeni kitap ekle linki görünür durumda.
Yeni kitap ekleye tıkladığımızda, karşımıza ekleme için bir bir form sayfası geliyor.
Formu doldurup Insert’e basarsak bir hata sayfasıyla karşılaşacağız çünkü henüz bu işlem için SQL INSERT’i tanımlamadık.
oneBook.aspx sayfasında FormView1’in tasks’larından Configure Data Source’a basıyoruz.
Define Custom Statements or Stored Procedures ekranına kadar next diyerek geliyoruz.
INSERT tabını seçip boş alana SQL komutlarımızı yazıyoruz.
INSERT INTO [kitap] VALUES ( @kitapIsmi, @kitapYazar, @kitapImage)
set @id_beh=scope_identity()
INSERT INTO [kitapDetay] VALUES ( @id_beh , @kitapBaskiYili, @yayinEvi, @sayfaSayisi, @aciklama)
Bu aşamada takım arkadaşım Behlül Behram’a tekrar ve Ümit Akbaş hocama teşekkürlerimi iletmek istiyorum. Yukarıdaki INSERT cümlelerinde olanlar şunlar; ilk ve üçüncü cümlede kitap ve kitapDetay tablolarına veri girişi yapacağımızı bildiriyoruz. İkinci, set ile başlayan satır ise birbirine “inner join” ile bağlayıp veri çektiğimiz bu iki tablo arasındaki ilişkiyi tanımlıyor.
Şimdi insert formumuzu düzenleyeceğiz. Bunun için FormView1’in Edit template’ine geçip burada “InsertItem Template”‘i seçiyoruz.
InsertItem Template’te gerekli düzenlemeleri yapıyoruz.
Açıklama textbox’ını uzun yazı ekleyebilecek şekilde tag properties’inden düzenliyoruz. Ve End Template ile çıkıp oneBook.aspx’i kaydediyoruz.
Her şey yolunda ise sisteme login olup yeni kitabımızı eklemeyi deneyebiliriz. Herhangi bir kitabın detay sayfasındaki “Yeni kitap ekle” linki ile insert formumuzu açıp içini dolduruyoruz. Ve yeni kitabımızı Insert’e basarak ekliyoruz.
İşte yeni kitabımızın Kitap Listesi sayfasına eklenmiş hali.
Ve aynı kitabın oluşan detay sayfası.
Birazdan DELETE işlemlerini anlatacağım. Ama Ejderha Mızrağı (Dragonlance) serisini çok sevdiğimden ve zamanında Paladine rahibi olarak Palanthas sokaklarında uçan kaleye karşı savaştığım için bu işlemleri anlatırken Huma Dragonbane’in Destanını silemeyeceğimi fark ettim ve bu işlemler için iki kitap daha ekledim.
Tekrar oneBook.aspx sayfasını açıyoruz. FormView1’in Item Template’ine geciyoruz.
LoginView1’in içine Toolbox>ASP.NET Controls>Standard altından LinkButton kontrolünü sürükleyip bırakıyoruz.
LinkButton’un Tag Properties’inde değişiklikler yapıyoruz. Burada dikkat etmeniz gereken, CommandName’in “Delete” olması.
Uyarı*: LinkButton ile işinizi tamamladığınızda End Template Editing ile Edit alanından çıkıp dosyanızı kaydetmenizi öneririm. Expression Web ara sıra bu değişiklikleri koduna geçiremiyor.
Tekrar FormView1 tasklarından Configure Data Source’a tıklıyoruz. Delete işlemi için SQL komutlarımızı ekleyeceğiz.
Next ile Define Custom Statements or Stored Procedures ekranına kadar gelip DELETE tabını açıyoruz.
Yazılabilir alana DELETE komutlarımızı ekliyoruz.
DELETE FROM [kitapDetay] WHERE ([kitapDetayID] = @kitapDetayID)
DELETE FROM [kitap] WHERE ([kitapID] = @kitapID)
Şimdi yaptıklarımızı deneyelim. İlk önce login oluyoruz. Kitap listesi sayfasından silmeyi düşündüğümüz kitabın detay sayfasına gidiyoruz. “Kitabı sil” linkimiz hazır.
Kitabımız database’de tablolara ID’si 12 ile girmiş.
Silme işlemimizi yapalım. Kitabı sil butonuna basınca gelen sayfa altta.
Evet kitap listeden çıkmış.
Peki database’de durum nedir? Evet ID’si 12 olan kitabımız database’den de silinmiş. Böylece DELETE işlemini de başarıyla tamamlamış olduk.
Sitemize genel olarak bir göz atalım. Expression Web’i kullanarak bu ana kadar neler yaptık?
Önce tasarladığımız siteyi, CSS ağırlıklı ve master page kullanarak.aspx sayfalarına oturttuk. Ardından database bağlantısı oluşturup bilgiyi databaseden çektik. Bu aşamada işimizi görecek kadar Microsoft SQL Express’ide inceledik
Dinamik link oluşturup, kitaplarımızın detaylarını tek sayfa ile gösterdik.Bu aşamada template alanlarımızı kullanmayı da öğrendik.
Verilerimizi GridView ile çekmeyi öğrendik.
SQL, dışında XML’den veri çekmeyi de inceledik.
Ardından verilerimizi raslantısal (randomize) olarak çekmeyi öğrendik.
Ardından sitemizi düzenleme adımlarına geçtik. Bu kapsamda ilk önce login olmayı öğrendik.
Ardından sırasıyla verilerimizi düzenlemeyi, form ekranlarında kontrol yaratmayı, yeni veri girişini ve veriyi silmeyi öğrendik.
Böylece dokuz bölümden oluşan “Dinamik Web Sitesi” makale serisini tamamlamış olduk.
Başta söylemiş olduğum gibi bu makale serisi dinamik web sitesi oluşturmak isteyenler için başlangıç kaynağı olarak düşünüldü. Elbette SQL için bir takım kodları kullanmak durumunda kaldık ama bunun dışında nerdeyse her şeyi Expression Web’in sunduğu olanaklar ile gerçekleştirdik. Sürükledik bıraktık ve bize sunulan wizardları kullandık. Tüm bunları bir tek satır C# ya da VB kodu yazmadan yaptık. Elbette bu bize bir takım kısıtlamalar getiriyor ama bu da normal. Sonuçta eğer web tasarımcısı iseniz gitmeniz gereken en uç nokta burası zaten. ASP.NET ile proje geliştiren, Visual Studio kulanan bir ekibin tasarımcısı iseniz, programcı arkadaşlarınızla iletişime girerek, master page ve ASP.NET kontrollerini nerede nasıl kullanırsanız işlerini kolaylaştırabileceğinizi öğrenerek Expression Web ile işleri çok ciddi bir şekilde hızlandırabilir, tasarım giydirme işlemini kendi üstünüze alabilirsiniz. Data Grid örneği isteyen programcı arkadaşınıza, table ile oluşturulmuş örnek yerine data grid’in tamamen kendisini teslim edebilirsiniz.
İyi çalışmalar
Teşekkürler