web analytics
Çarşamba, Haziran 24, 2026
No Result
View All Result
  • Giriş
Türk İnternet
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
  • Kişisel Verilerin Korunması
    • Çerez Aydınlatma Metni
    • İlgili Kişi Başvuru Formu
No Result
View All Result
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
  • Kişisel Verilerin Korunması
    • Çerez Aydınlatma Metni
    • İlgili Kişi Başvuru Formu
No Result
View All Result
Türk İnternet
No Result
View All Result

Web Formlarına Dinamik Denetim Eklenmesi – 1

Devinimli bir şekilde Web denetimleri yaratmak ve onları Web Formuna eklemek zorlu bir süreç olabilir. ASP.NET motorunun Web Formlarındaki denetimlere ve de olay akışı döngülerine nasıl öncelik kazandırdığını anlamak bu işin düğüm noktasıdır.

Shannon Horn-Shannon Horn
29 Temmuz 2003
-Genel
0
Facebook'ta PaylaşTwitter'da PaylaşLinkedin'de Paylaş

Yalnızca dahili ASP.NET Web sunucusu denetiminin sağladığı denetimleri ve işlevleri gerektiren Web Formlarını oluşturmak kolaydır. Ancak genişletilmiş denetimlere ve işlevlere sahip bir tasarımı olan ya da böyle bir tasarımı gerektien Web Formları oluşturmak kullanıcıyı zorlayabilir.

2000 yılında 134 tablo içeren bir SQL Sunucusundaki müşteri veri tabanı üzerinde çalışıyordum. Uygulamanın tasarımını öyle yaptım ki müşteri tüm verilere ulaşmak için kaydedilmiş prosedürleri kullanabiliyordu. Benim yaptığım tasarımda her tabloda en az kendi verisiyle birlikte işleyen dörder kaydedilmiş prosedür vardı. Her bir tabloda rastlanan bu kaydedilmiş prosedürler, hangi müşteriyi sorduğunuza göre, ya tabloda NURD [New (Yeni), Update (Güncelle), Read (Oku), Delete (Sil)] işlevleriyle kaydedilmiş olanlardı ya da CRUD [Create (Yarat), Read (Oku), Update (Güncelle), Delete (Sil)] işlevleri olanlardan oluşuyordu.

Çok zaman, her bir tablonun tablo ve sütun adına ilişkin olan Yeni/Yarat işlevlerinin farklı olması dışında geri kalan tüm kod aynı kaldığı için, bu kaydedilmiş prosedürlerdeki kod, hep aynı komutları tekrarlayan bir kod oluyordu. Bu, her bir tablonun diğer türdeki kaydedilmiş prosedürleri için de geçerli. Her bir tablonun NURD kaydedilmiş prosedürlerine ek kaydedilmiş prosedürü de olabiliyordu. Kaydedilmiş prosdür türleri arasında aynı kodun tekrarlanması çok sık rastlanan birşey olduğundan, yapılacak görev, kaydedilmiş prosedürler yaratmak için bir kod kopyalama, yapıştırma, değiştirme ve kaydetme işinin yüzlerce kez tekrarlanmasından oluşan uzun bir iş oluyordu.

Beraber çalıştığım geliştirme ekibi NURD işlevli kaydedilmiş prosedürleri yaratmak için yaklaşık 90 saat harcayacağımızı tahmin ediyordu. Bu ruhsuz görev gözümüzü korkutuyordu. Buna çözüm olarak, ekibim klasik ASP ve SQL Dağıtılmış Yönetim Nesneleri (SQL-DMO ‘Distributed Management Objects’) kullanarak otomatik çalışan bir kaydedilmiş prosedür yapıcı program oluşturdu. Bu aracın nasıl oluşturulduğunu ileride yazacağım bir makalede genel hatlarıyla anlatacağım.

2001’da (.NET beta 2 çıktığı zaman) bu otomatik kaydedilmiş prosedür yapım programını klasik ASP’den ASP.NET’e aktardım ve programı bir dizi klasik ASP Web sayfasını tek bir ASP.NET Web Formuna toparladım. Her ne kadar bir yandan başka ASP.NET projelerinde çalışıyordum ise de bu aktarım sayesinde ASP.NET hakkında bazı önemli şeyler öğrendim. Öğrendiğim en önemli şey, ASP.NET Web Formlarının olay akış döngülerine ilişkindi.

Bir Örnek

Yukarıda bahsettiğim aktarma projesi çok fazla açıklama gerektiriyor ve bu makalenin asıl varmak istediği noktadan saptırabilir, bu yüzden size öğreteceğin ilkeleri göstermek için numune niteliğinde bir Web Formu kullanacağım.

Numune Web Form’um, basitçe, tıklandığında birkaç şirket türünü listeleyen bir Form. Dökülen bir listeden bir şirket türü seçtiğinizde form bu sefer seçtiğiniz türdeki tüm şirketlerin listesini döküyor. Her ne kadar yukarıda bahsettiğim program aktarma projesi geleneksel tuş türü denetimleri kullanıyorsa da, verdiğim bu örnekteki uygulama listelenen şirketlerden birine tıkladığınızda onun ayrıntılarını gösteren dahili Web sunucusu tuşlarını kullanıyor, bakınız Şekil 1.


Şekil 1: İki muhasebe şirketini listeleyen uygulama örneği.

Ayrıntıları görüntüleme tuşları her bir şirket adının yanında bulunmakta ve şirketi tanımlayıp sonra da ayrıntılarını görüntüleyen işlev komutlarına bağlı. Ayrıntıları göstermeye yarayan hiç bir tuş, otuş sayfaya eklenmeden önce var olmaz. Benim uygulamam her bir tuşu önce çalışacak şekilde oluşturur ve sonra sayfa oluşturulurken o tuşu yerine yerleştirir. Aşağıdaki kodda, çalışır durumda bir tuş oluşturmak için kullanılan C# kodunu görebilirsiniz.

    // Bir tusa yeni bir ornek yarat.
    Button sirketAyrintiTusu;
    sirketAyrintiTusu = new Button();
    sirketAyrintiTusu.CausesValidation = true;
    sirketAyrintiTusu.CssClass = “btnstandard”;
    sirketAyrintiTusu.ID = _
    “btnMuhasebeAyrintilariGWAS”;
    sirketAyrintiTusu.Text = “Ayrintilari Goruntule”;

Bu kod, sirketAyrintiTusu adında, işleyen bir tuş yaratır ve onun bazı özellikleri düzenler. Bu tuş daha sonra bir tür içerici denetimine eklenmelidir ki fiili olarak sayfa bulunsun. Aşağıdaki gibi bir kod ile, bu tuş doğrudan doğruya ASP.NET Web Formuna eklenebilir:

    // Tusun Web Formuna eklenmesi.
    Page.Controls.Add(sirketAyrintiTusu);
Bir Web Formuna doğrudan doğruya denetim eklememelisiniz çünkü denetim için oluşturulan kod, şeklindeki kapatma tag’ının hemen arkasından HTML komut akışının sonuna eklenir.

Böyle bir kod sorun teşkil eder çünkü söz konusu tuş, Web Form denetiminin öz evladıdır. Tuşu görüntületecek olan kodun Web Formu kodunun neresine yerleştirilmesi gerektiğini saptamanın hiçbir yolu yoktur ve bu yüzden de bu kod ya HTML komut akışının sonuna yazılır ya da kapanış işlevi gören tag’ının hemen sonrasına yazılır. Bu da iyi şekillenmemiş bir HTML sayfasıyla sonuçlanır.

Yine de, Internet Explorer çok merhametli olduğu için tuşu yerli yerinde gösterir. Sorun, eklenen denetimin, sunucu-yanlı biçimleyici bir öğe içinde yer alması gereken bir ASP.Net Web sunucusu denetimi olması ve dolayısıyla da ASP.NET motorunun, sayfanın web tarayıcısı tarafından görüntülenmesine izin vermemesidir, bakınız Şekil 2. Bu sınırlandırmayı, başka yolu dolanarak devredışı bırakmak için ben denetimleri, tablo ya da yertutucu gibi bir sunucu-yanlı biçimleyici öğe içinde yer alan bir içericiye ekliyorum.


Şekil 2: Bir denetimi doğrudan doğruya Web Formuna eklemenin sonucu.

Microsoft, program kodundaki denetimlerle çalışmaya yönelik nesne modelini normalleştirip herhangi bir içericiye denetim eklenmesi işlemini tutarlı bir hale getirmekle çok iyi bir iş başardı. Aşağıdaki kod, sirketAyrintiTusu ‘nu sirketAyrinti adlı bir tablo verisi hücresine eklemeye yarıyor:

    // Tusun tablo veri hucresine eklenmesi.
    sirketAyrinti.Controls.Add(AyrintiTusu);

Yukarıdaki kod, tuşu dinamik olarak yaratmayı gösteriyor ama tuş henüz etkin değil. Kullanıcı üzerine tıkladığında tuşun fiili olarak etkin olması için tuşa aşağıdaki gibi bir olay değerlendiricisi eklemek zorundayım:

    // Tuslama olayi icin olay degerlendirici eklenmesi.
    sirketAyrintiTusu.Click += new EventHandler(this.MuhasebeAyrintilariGoster);

Bu kod sirketAyrintiTusu tuşuna Click yani tıklama olayına System.EventHandler türü yeni bir olay değerlendiricisi ekliyor. Birisi tuşa tıkladığında olay değerlendiricisinin çalışması için, olay değerlendiricisinin bir işlev üyesinin adının verilmesi gerekir. Verdiğimiz örnekte olay değerlendiricisinin eline geçen ad, Web Formu için arkadaki kodda yer alan, MuhasebeAyrintilariGoster işlev üyesidir. Bu kodun sorunsuz çalışması gerekiyormuş gibi gelebilir. Yine de her ne kadar bu kodu uygulama sürecinde istediğiniz yere koyabilseniz de, siz onu doğru yere yerleştirmedikçe hiçbir etki doğurmayacaktır.

Etiketler: BilgiWeb Geliştirme

Türk İnternet'ten buna benzer yazılar için bildirim almak ister misiniz?

ABONELİKTEN ÇIK
Shannon Horn

Shannon Horn

Lütfen yorum yapmak için giriş yapın.

GÜNLÜK BÜLTEN ABONELİĞİ

Aboneliğinizi onaylamak için gelen veya istenmeyen posta kutunuzu kontrol edin.

HAFTANIN ÖNE ÇIKANLARI

  • St. Petersburg Forumu, Rusya’nın Yeni Teknoloji Stratejisinin Sinyallerini Veriyor: Nadir Toprak Elementleri, Yapay Zeka, Yarı İletkenler ve Teknolojik Egemenlik
  • Türkiye Yapay Zeka Stratejisinde Yeni Dönem: Dijital Egemenlik Merkeze Yerleşti, Peki Bu Yeterli mi?
  • Teknoloji Girişimlerini İlgilendiren Yeni Düzenlemeler Yürürlükte
  • Washington Yapay Zekada Yavaşlatma Yerine Hızlanmayı Seçti: Yeni ABD Yapay Zeka Doktrini ve Riskleri
  • Dijital Dönüşüm ve Gazeteciliğin Küresel Krizi

HAFTANIN KELİMESİ

3GPP

3. Nesil Ortaklık Projesi (3GPP), dünya çapında çeşitli mobil (hücresel) ve telekomünikasyon standartlarını geliştiren ve sürdüren bir grup standart kuruluşudur.

3G ile birlikte kurulmuş ve telekom endüstrisinin Birleşmiş Milletleri diye tanımlanabilir. Sonraki nesiller için de standartları belirlemiştir.

Detayı için Wiki-Turk'e bakınız

İNTERNET HIZI

Türkiye'nin İnternet Hızlarını Dünya ile KarşılaştırmakKaynak : https://www.speedtest.net/global-index#mobile
Facebook Twitter LinkedIn

Bildirimler

Turk-internet.com masaüstü bildirimlerini almak için lütfen buraya tıklayın

Son Yorumlar

  • ICANN, Yeterince Temsil Edilmeyen Toplulukları Yeni gTLD Başvuru Destek Programı İle Güçlendiriyor için Tolga Kaprol
  • BTK, Yabancı e-SIM Firmalarını Engelledi için Bulent SEN
  • Sahibinden.com Domain’inin Güncellenmesi Unutulmuş için Tolga Kaprol
  • İngiliz Düzenleyici Ofcom, Bulut Servislerini ve Akıllı Cihaz Pazarını Soruşturuyor için Tolga Kaprol
  • Seçim Yaklaşırken, Kişisel Veriler Kötüye Nasıl Kullanılır? için [email protected]

Türk İnternet'ten ilginize çekecek yazılar için bildirim almak ister misiniz?

Abone Ol

© Copyrights 2000-2025 - Bu sitede yayınlanan haber/söyleşi/makale ve bilgilerin tüm hakkı turk-internet.com'a aittir.

Tekrar Hoşgeldiniz!

Aşağıdan hesabınıza giriş yapınız

Şifremi unuttum?

Şifrenizi geri alın

Lütfen şifrenizi resetlemek için kullanıcı adı veya email adresinizi girin.

Giriş yap
No Result
View All Result
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
  • Kişisel Verilerin Korunması
    • Çerez Aydınlatma Metni
    • İlgili Kişi Başvuru Formu

© Copyrights 2000-2025 - Bu sitede yayınlanan haber/söyleşi/makale ve bilgilerin tüm hakkı turk-internet.com'a aittir.