mehmetduran.com - Paylaşmak Güzeldir...
Asp.net ile Dinamik Kontrol Oluşturma ve Değerlerini Alma
Yaptığımız bir çok uygulamada dinamik olarak kontrol oluşturmaya ihtiyaç duyarız. Ben de bu konu hakkında bir örnek vermek istedim. Öncelikle ben textbox oluşturma ve değerlerini alma şeklinde bir örnek yaptım ve bunun üzerinde anlatacağım. Ancak bu örneği diğer tüm kontroller için kullanabiliriz. (Label, button, checkbox, fileupload, vs...)

Dinamik Kontrol Oluşturma
Yapacağımız uygulama ile yandaki gibi bir görüntü elde edeceğiz. İlk sıradaki textbox ile oluşturulacak kontrol sayısını belirliyoruz. Oluştur butonu ile kontrollerimizi oluşturuyoruz. Daha sonra oluşan kontrollere değerleri girip Değerleri Al butonu ile değerlerini alıp, bu değerleri yazdırıyoruz. Yandaki görüntüsü verilen uygulama tam olrak bunu yapmaktadır.

Dinamik olarak buton (dinamik kontrol ancak tıklandığında server`a gidip işlem yapan kontroller) oluşturup bu buttonlar ile ayrı ayrı nasıl işlem yapılacağı biraz farklı. Bu konuyu da daha sonra başka bir yazıda ele alacağım.

Şimdi ise kodlarımıza bakalım.
Dinamik Kontrol Oluşturma Kodlar
Oluşturacağımız kontrollerin tipi ne ise ona göre bir dizi oluşturuyoruz. Bu dizi ile oluşturduğumuz kontrolleri tutacağız ve değerleri alırken bu diziyi kullanacağız. Bu yüzden tanımladığımız yere dikkat etmeliyiz.

ekle metodu ile oluşturacağımız kontrolleri oluşturuyor ve sayfamızdaki bir panele ekliyoruz. ekle metodunu hem Button1_click hem de page_load da çağıracağız. Burası önemli. Yoksa hata alırız.

Button2_click eventında ise dinamik olarak oluşturduğumuz kontrollerin text değerlerini alıyoruz ve bu değerleri yazdırıyoruz.

Böylece dinamik olarak nasıl kontrol oluşturup değerlerini alacağımızı öğrenmiş olduk.

Bu örneği textbox üzerinden anlattım. Ancak bu örneği tüm kontrollere uygulayabiliriz.  Tabi değerlerini alabileceğimiz kontrollere.

İyi Çalışmalar !
Mehmet Duran 19 Temmuz Cumartesi 2008 24 41012 3,9
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar LISCH ve EISCH Algoritmaları LINQPad .Net'te MySql ExecuteScalar Metodunu Kullanma Linq ile Dizindeki Dosyaları Gösterme Bilgisayarımızda Asp Sayfalarını Çalıştırmak için IIS Ayarları
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Erdem ÖZKARA 24 Eylül Çarşamba 2008 19:51 #1
Zamanınızı ve biliginizi paylaştığınız için çok Teşekkürler.
Kursad 03 Ekim Cumartesi 2009 19:49 #2
Merhabalar burada hem PageLoad da hem de Button_click da ekle() olmasının sebebi nedir?PageLoad da TextBox1 henüz doldurulmadıgından hata almaz mıyız?Bir de ben aynısına yapıyorum ama değerleri almak için kullandıgım butona tıkladıgım anda olusan kontroller de gidiyor sayfa ilk yüklendiği halini alıyor ve degerleri alamıyorum sanırım bu PostBack olmasından dolayı sayfanın...
Mehmet Duran 04 Ekim Pazar 2009 22:10 #3
Merhaba. İlk belirttiğin noktada ekle metodunun sadece pageLoad'da olması yeterli. Bu gözümden kaçmış sanırım. Bu metot ile kontrolleri sayfaya ekliyoruz. yani herhangi bir değer alma işlemi yok ve hata oluşmaz. Değerleri Button2_Click eventı içinde alıyoruz. Bu değerleri almak için ekle metodunun pageLoad'da olması gerekir ve sadece burada olması yeterlidir. Ekran görüntüsünü kodları çalıştırarak almıştım. Yani çalışmaması söz konusu değil. Paylaştığım tüm kodları deneyerek paylaşıyorum.
Ahmet Ongun 31 Ekim Cumartesi 2009 07:22 #4
Selamlar, makale için teşekkürler... Peki bu oluşturulan kontrolleri nasıl drag drop yapabiliriz yani C# ile Desktop uygulama geliştirdiğimiz IDE'deki gibi ?
Mehmet Duran 01 Kasım Pazar 2009 00:01 #5
Drag, drop işlemleri için script kullanmalısın. jQuery ile drag drop yapabileceğin kütüphaneler mevcut. Direk olarak bu kütüphanleri kullanabilirsin.
Kursad 19 Kasım Perşembe 2009 03:55 #6
Şu tarz bir senaryomuz olsun..Sayfada bir buton var ve her butona tıklanışta yeni bir TextBox oluşturulacak..Bir tane oluşturup butona basınca sayfa postback oldugunda önceki buton kayboluyor..Viewstate i etkin bir şekilde kullanmak,kodları init de çalıştırmak gibi işlemler gerekiyor sanırım ama yapamadım henüz.Bu konuda bir bilgin var mı acaba?
Mehmet Duran 19 Kasım Perşembe 2009 23:08 #7
Postback ile işlem yaparken kontrolleri oluştururken aynı zamanda viewstate'i de kontrol etmek gerekir. Bu şekilde sorun çözülebilir. Ama bunlarla uğraşmak yerine, javascript ve Ajax kullanmak daha kolay olabilir.
Kursad 27 Kasım Cuma 2009 22:47 #8
Acaba elinde bu tarz bir örnek var mı?eburhan.com da jquery ile bir örnek görmüştüm ama asp.net web formunda işe yaramadı.
Mehmet Duran 28 Kasım Cumartesi 2009 14:23 #9
Buna benzer çalışmalar yaptım ve kullanıyorum. Ancak hepsini javascript, jquery ile yapıyorum. Server taraflı çalışmak performansı oldukça düşürüyor ayrıca birçok kayıp ve sorun oluyor. Şu an elimde verebileeğim bir örnek yok. Yapmaya çalıştığını ve üzerinde durduğun örneği gönderebilirsen yardımcı olmaya çalışırım.
Emre ORDUKAYA 28 Ocak Perşembe 2010 15:18 #10
Aynısı uygulandığında değerleri almak için kullanılan buton hata veriyor. Debugda gördüğüm üretilen tb lar button1 den cıkınca kayboluyor. bunun için tanımlamayı; public static TextBox[] tb = new TextBox[30]; şeklinde yapıp hatayı bertaraf ediyorum ancakk bu seferde textboxların içerisine yazdığım değerler gözükmüyor. yani alamıyorum.
Mehmet Duran 28 Ocak Perşembe 2010 15:43 #11
Öncelikle kodlarımda kontrol oluşturma sadece buton click içinde değil page_load'un da içinde. Bu şekilde buton_click içinde ekle metoduna gerek kalmıyor. Ben zamanında yazarken bu şekilde yapmışım ama buton_click içinde ekle metoduna gerek yok. Sadece buton_click içinde çağırılmış olması sıkıntı oluşturmuş olabilir. Bu yüzden ekle metodu yani kontrol oluşturma işlemi page_load içerisinde yapılırsa sorun olmayabilir. (Sorun buradan kaynaklanıyor ise.)
Gökhan 28 Ocak Perşembe 2010 16:39 #12
Verdiğiniz kodun çalışma imkanı yok.sayfa her postback yaptıgında new TextBox(20) yinelenecek yeni 20 işaretlenmemiş textboxlar olacak.Ekle kısmı çalışır fakat.getir butonu çalışabilmesi için findcontrol kullanılmalıdır..
Mehmet Duran 28 Ocak Perşembe 2010 17:05 #13
Sitemde verdiğim tüm kodları deneyerek ve çalıştırarak paylaştım. Bu kod bölümü de bunlardan biri. Dediğin gibi findcontrol metodu ile bu yapılabilir ama benim yaptığım yöntem ile de çalışmakta. Verdiğim ekran görüntüsü de çalışır hali.
Emre ORDUKAYA 28 Ocak Perşembe 2010 18:01 #14
Merhabalar, Gökhana katılıyorum. Ancak codebehind da oda patlar. Sayfa postback olmadan findControl javascript içinden ancak çalışır diye tahmin ediyorum. Sizden ricam, madem bu kod çalışıyor, buraya kaynak kodunu ekleme ihtimaliniz varmıdır. Bu konuda çok minnettar kalırız.
Mehmet Duran 28 Ocak Perşembe 2010 23:12 #15
Dediğim gibi çalşıyor ve bir sıkıntı yok. Kodları yeniden yazıp, denedim. Son kodları (aynı kodları) mail ile gönderdim. Umarım sorun çözülür.
Emre ORDUKAYA 29 Ocak Cuma 2010 01:34 #16
İlgin için çok teşekkür ederim. Mailini az evvel fark ettim ama akşamüzeri bu problemi halletmiştim. Yol olarak hemen hemen seninkitle aynı.. Ancak ben (izin verirsen) ekstra kaynak olsun diye soru sorduğum forumun linkini yazıyorum..
PROBLEM ÇÖZÜLDÜ.
http://forums.asp.net/p/1519434/3646164.aspx#3646164
Kolay Gelsin..
halit çetiner 04 Şubat Perşembe 2010 04:42 #17
mehmet arkadaşa katılıyorum ,kod çalışıyor hem de 6 tane ayrı ayrı sayfa dan oluşan bir uygulamada çalıştırdım dinamik olarak textbox oluşturmam gerekiyordu,bu adım 5.adımdı bu adıma gelene kadar 4 adım var yanıi 4 tane de ayrı sayfa vardı butun autopostbackleri false yapıp calıstırın calıstıgını goreceksiniz mehmet durana basarılar diliyorum .
Yeşim 12 Mayıs Çarşamba 2010 18:19 #18
Merhabalar, ben de sınav yapan bir site yapmaya çalışıyorum.Soruları ve şıkları veritabınından çekip sayfaya dinamik olarak ekliyorum. Soru seçenekleri için radiobuttonlist kullanıyorum. Cevapları nasıl karşılaştırabilirim? Teşekkürler
Mehmet Duran 13 Mayıs Perşembe 2010 00:22 #19
Merhaba. Bunun için öğrencinin cevaplarını belirli bir düzende bir diziye atarsın. Aynı şekilde testin doğru cevaplarını da bir diziye atarsın. Bu iki diziyi birbiri ile karşılaştırarak sonucu elde edebilirsin. Linq sorgulaması kullanabilirsin veya döngü ile her durumu karşılaştırabilir ve hangi sorunun doğru hangisinin yanlış olduğunu elde edersin.
Yeşim 13 Mayıs Perşembe 2010 09:21 #20
Merhaba, ilginiz için çok teşekkür ederim. Sayfadaki radiobuttonların (her soru için) hangilerinin seçildiğinin kontrolünü nasıl gerçekleştirebilirim? Sayfayı baştan sona bir şekilde taramam lazım. Dinamik kontrol oluşturma ve onları kullanmaya falan yeni başladığımdan nasıl yapacağımı henüz bulamadım. veri tabanından cevap anahtarı çekme, diziye atma, karşılaştırma kısmını yapabilirim diye düşünüyorum. veri tabanı işlmeleri için Linq kullanıyorum ben de sizin dediğiniz gibi. Tekrar teşekkürler
Mehmet Duran 14 Mayıs Cuma 2010 00:09 #21
Sayfada seçenek işlemleri için hazır olarak gelen radiobuttonlist kontrolünü kullanabilirsin ama bu kontrolden değerleri nasıl aldığını şu an hatırlamıyorum. Çok uzun süredir hazır kontrolleri kullanmıyorum. Bunun yerine bu yapının html kodlarını kendin oluşturup, değerleri alırken Javascript kullanabilir ve kullanıcının seçmiş olduğu değerleri Javascript ve Ajax ile sunucuya taşır ve işlemleri yapabilirsin. (Aynı yapıyı kısa süre içinde yapmıştım ve bahsettiğim gibi jQuery ve Ajax kullanmıştım.) Böylece postback'lerden de kurtulursun. Bu konuda fikir vermesi açısından buradaki yazımı inceleyebilirsin.
Emre CT 19 Mayıs Çarşamba 2010 17:32 #22
Yazı güzel olmuş,ellerine sağlık! Ben buna benzer bişe yapmıştım bunda sorun yok ama şöyle bir sorunum var: Dinamik Olarak Table oluşturuyorum ve Hucrenin içine yine Dinamik olarak oluşturduğum DropDownList'i nasıl koyarım onu bulamadım!Yardım edebilirmisin acaba!?
Mehmet Duran 20 Mayıs Perşembe 2010 12:45 #23
Kontrollerin çoğu sınıf olarak tanımlanmıştır. Bu sınıfları kullanarak nesne oluşturabilir ve bu nesneyi kontrollerin altında yer alan controls değişkenine Add metodu ile ekleyebilirsin. (.. Nesne1.Controls.Add(Nesne2) gibi.)
Kazim 27 Eylül Pazartesi 2010 00:37 #24
hocam ellerin dert görmesin çok güzel örnek :))
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Ne edersen kendine, edersin kendi kendine.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009