26 Kas 2006 C# da Karar Yapıları ve Döngüler Kategori: C#.NET Etiketler: .NET FrameworkC# 1 Yorum C# da Karar Yapıları ve DöngülerKarar Yapıları IF Program içinde karar vermek için kullanılan en basit yapıdır. If..Else deyimi bir Boolean ifadeyi degerlendirerek program denetimi belirtilen deyim gruplarına geçirir. Bir örnekle açıklamak gerekirse; Simdi kafanızda canlandırın. Tatil yapmak istiyorsunuz. Brosürlere baktınız. Elinizde 4 seçenek var. Bodrum, Fethiye, Ayvalık, Uludag ve cebinizde 40 lira var. Fiyatlara baktınız Ayvalık ve Uludag seçeneklerinin fiyatları 90 lira. Bodrum 30, Fethiye 35. Kafadan bi kere 90 lıkları elediniz. Eee bütün parayı oraya verirsek ne yicez ne içicez deyip acaba tüm masraflar dahilmi onada baktınız. Fethiyede hersey dahil. Güzel Bodruma göre 5 lira fazla olmasına ragmen daha kârlı. Evet Kararınızı verdiniz Fethiye ye gidiceksiniz. Iste karar yapıları böyle kurulur. Tabi ki burada ki yapı çok kompleks bir yapıdır. Yüzeyseldir. Programlamada her türlü olasılık bu yapılar içinde belirtilmek zorundadır. Meselâ tatilden dönünce ise gidicek parayı nerden bulacagınız gibi. Burası çok önemli bir noktadır gerçek hayatta bu hayati bir mesele olmamasına ragmen programlamada bu yapı çöker. Operatörler C# içinde operatörleri asagıdaki gibi kullanacagız. < Küçüktür <= Küçük esittir > Büyüktür >= Büyük esittir != Esit degildir = = Esittir C#'taki if deyimi C ve C++ a benzer. Eger parantez içerisindeki kosul dogru ise ilgili blokdaki program kodu execute edilir. Yapısı: if (Islem) { //Eger karsılastırma sonucu true ise execute edilir } Örnek 2: if (saat = = 24) { saat = 0; gun++ } Else C# aynı zamanda daha complex bir yapı saglamak için else de kullanır. if (Islem) { //Eger karsılastırma sonucu true ise execute edilir } else if (Islem2) { //Islem karsılastırmasının sonucu false ve // Islem2 karsılastırmasının sonucu true ise //execute edilir } else { // Islem karsılastırmasının sonucu false ve // Islem2 karsılastırmasının sonucu false ise //execute edilir } Asagıdaki örnek kod ile true yada false durumlarında programın akıs degisimi bir sekli de gösterilmistir. using System; public class IfExample { public static int Main() { bool Islem =false; if (Islem) { Console.WriteLine("Islem ’in degeri true"); } else { Console.WriteLine("Islem 'in degeri false"); } Console.ReadLine(); return 0; } } Bu örnekte ise if'in farklı bir kullanımını görülebilir. if (a) { int j=FunctionA(); } else { int j=FunctionB(); } //Asagıdaki kod yukarıdaki ile aynı islemi yapar. int j=ExpressionA?FunctionA():FunctionB(); switch.case Deyimi Switch deyimi de if deyimi gibi programın kosullara gore yönlenmesini saglar. Özellikle bir degiskenin degerine gore degisik islemler yapılacaksa o zaman Switch..Case yapısı uygun olur. Örnegin ücret degerinin belli kademelerde degisik oranlarda vergilenmesi gibi. Yapısı: Switch (degisken) { Case kosul1: Islem1 Case kosul2: Islem2 Default: Islem3 } Default etiketi, degerin herhangi bir case kosuluna uymadıgı durumlarda gidilecek deyimi belirtir. Örnek: using System; public class switchExample { public static int Main() { for (int i=1;i<10;i++) { switch (i) { case 1: Console.WriteLine("Bir"); break; case 2: Console.WriteLine("Iki"); break; case 3: Console.WriteLine("Üç"); break; case 4: Console.WriteLine("Dört"); break; case 5: Console.WriteLine("Bes"); break; default: Console.WriteLine("Sayı 5’ten büyük"); break; } } Console.ReadLine(); return 0; } } Yukarıdaki kod incelendiginde açık olarak görüldügü gibi i degiskenin alabilecegi her deger göz önünde bulundurularak kosula göre gereken islem yapılmıstır. default tanımlamadan 'yukarıda belirtilen degerlerden herhangi birisine sahip degilse' anlamı çıkarılmalıdır. switch kullanırken dikkat edilmesi gereken case ile deger bildirildikten sonra yazılan kodun en sonuna yani diger kosula geçmeden once break kullanarak compiler'a kosul tanımının bittigini söylemektir. Aksi takdirde "Control cannot fall through from one case label ('labelname:') to another" seklinde bir compiler hatası ile karsılasırız. Döngüler Loops Programlamanın diger önemli elemanlarından biri de döngü kullanımıdır. C# ile döngü kullanımı da diger programlama dillerinde oldugu gibi mantık olarak aynıdır. while Döngüsü Belirtilen kosul gerçeklesene kadar bir döngüye ihtiyacımız oldugunda kullanacagımız döngülerdir. Tek dikkat etmemiz gereken tanımlanan kosul gerçeklesmisse döngünün execute edilmesidir. Bunun nedeni kosulun döngü baslangıcında bildirilmesidir. using System; public class whileExample { public static int Main() { int i=0; //i degiskenin degeri 7’den küçükse //döngüye basla while (i<7) { i++; Console.WriteLine(i); } //i degiskenin degeri 8’den büyükse //döngüye basla deger 8’den büyük olmadıgı //için asagıdaki döngünün burada hiç bir islevi yoktur. while (i>8) { i++; Console.WriteLine(i); } Console.ReadLine(); return 0; } } do.while Döngüsü While döngüsünden tek fark olarak karsılastırmanın döngünün sonunda yapılmasıdır. Bu durumda program akısı geregi döngü durum ne olursa olsun asagıda belirtilen kosul saglanana kadar yada break keyword'ü ile döngünün kesildigi söylenene kadar execute edilir. using System; public class whileExample { public static int Main() { int i=0; do { i++; Console.WriteLine(i); if (i==5) { break; } }while (i<8); Console.ReadLine(); return 0; } } Uygulama: 1 ile 10 arası deger girilene kadar ekrandan deger okuyacak program parçasını yazın. Çözüm: do { Console.Write ("degeri girin"); deger = int.Parse (console.ReadLine()); } while (deger < 0 ½½deger >= 10); For Deyimi Bir grup deyimi belli sayıda çalıstırarak (tekrar ederek) bir döngü olusturur. Örnegin birden ona kadar (on kere) su islemi yap seklinde. Özellikle bir döngü denetim degiskenin kullanıldıgı (sayaç) bu döngü yapısı iç içe döngülerin de yapılmasını saglar. Yapısı: for (ilk deger ; kosul ; artırım ) iç deyimler Örnek: for (int i = 0; i < 10; i ++) { Console.WriteLine(i); } For...Next döngüsünde döngü degiskeni, döngünün kullanımında önemli bir rol oynar. Kullanımlardan genellikle döngü degiskeni ile bir dizinin elemanı ya da kayıt sayısı gibi degerler temsil edilir: for (int i = 0; i < 7; i ++) { Console.WriteLine(gunler[i]); } Jump Deyimleri Döngüler ve karar deyimleri görevlerini yerine getirirken, bazen çıkıs yapmaya gereksinim duyulur. C#’da goto, break ve continue deyimleri atlama deyimleri olarak bilinir. Goto deyimi program içinde belirtilen bir etikete atlamayı saglar. Ancak yapısal programlama açısında kullanımı önerilmez. Örnek: .. atla: .. goto atla; Break ve continue deyimi En yakın bloktan çıkısı saglar. Continue deyimi ise yeni bir döngüye baslar. int sayac = 1; while (true) { Console.WriteLine(sayac); sayac++; if (sayac <= 10) continue; else break; } Bir sonraki makalede görüsmek üzere. Herkese iyi çalısmalar dilerim
26 Kas 2006 Stored Procedures Kategori: SQL Server Etiketler: SQL Server 2 Yorum Stored Procedures SQL Server üzerinde tutulan T-SQL ifadeleridir. Belli bir görevi yerine getirebilmek amacıyla yapılandırılırlar. SQL Server üzerinde derlenirler. Belirlediğimiz şartlara göre, program içinden çağrılarak kullanılırlar.. Stored Procedures SQL Server üzerinde tutulan T-SQL ifadeleridir. Belli bir görevi yerine getirebilmek amacıyla yapılandırılırlar. SQL Server üzerinde derlenirler. Belirledigimiz sartlara göre, program içinden çagrılarak kullanılırlar.. T-SQL deyimleriyle yazılan Store Procedures sadece ilk kez çalıstırıldıklarında derlenirler. Daha sonraki çalıstırma islemlerinde derlenmezler. Bu sayede çalısmalarımızda hız kazanmıs oluruz. Birkaç çesit stored procedure vardır. Bunlardan bazıları asagıdaki gibidir: System Stored Procedure: sp_ ön eki ile baslayan saklı yordamlar, SQL Server tarafından tanımlanmıs saklı yordamlardır. master veritabanında saklanırlar. Bu Store Procedures, herhangi bir veritabanı üzerinde sistemle ilgili yönetimsel islemler için kullanılırlar. Extended Stored Procedure: Genisletilmis anlamında xp_ ön eki ile baslayan bu saklı yordamlar, SQL Server’ın dısında çalıstırılan dinamik baglantı kütüphaneleridir (DLL). Local Stored Procedure: Biz de SQL Server üzerinde saklı yordamlar olusturabiliyoruz. Bunlara da yerel store procedures denir. Olusturdugumuz veritabanının Stored Procedure alt baslıgı altında, yerel saklı yordamlarla ilgili, stored procedure ekleme, silme, düzeltme gibi islemleri gerçeklestirebiliriz. Olusturdugumuz veya var olan saklı yordamları kullandıgımızda birçok avantaj elde ederiz. Bunlardan bir kaçı dolayısıyla stored procedurekullanım sebepleri asagıdaki gibidir: - Store procedures, SQL Server’ a esneklik ve hız kazandırırlar. - Önceden derlenmis oldugu için, normal kullandıgımız bir SQL sorgusunun tekrar tekrar çalıstırılmasına nazaran daha fazla performans elde etmemizi saglarlar. - SQL Server üzerinde tutuldugundan, yükü istemci tarafına degil de, sunucu tarafına yükleyerek programımızın performansını arttırır. (Tabi bu bir seçimdir. Sunucumuz güçlüyle bu seçimi tercih edebilirsiniz.) - Bir kez yazılıp, tekrar tekrar kullanıldıgı için modüler bir yapıda program gelistirmis oluruz. - Aynı T-SQL cümlecigini birden fazla yerde kullanacagımız zaman, bunu bir stored procedurehaline getirerek, kullanımını sadece ismini çagırma ile gerçeklestirebiliriz. - Belirli girdi ve çıktı parametreleri oldugu için, saklı yordamların kullanımı ile güvenlik açısıdan kendimizi saglama almıs oluruz. - Ag trafigini azaltır. Istemci tarafından birçok satıra sahip SQL komutunun sunucuya gitmesindense, sadece saklı yordamın adının sunucuya gitmesi agı daha az mesgul etmis olur. Yerel Stored procedureOlusturma Ilk olarak Sql Server'i açarız. Daha sonra Query Analyzaer'i açarız ve asagıdaki kodları yazarız. Asagıdaki store procedure bize müsteriye ait siparisleri geri döndürür. T-SQL deyimleriyle yazılan Store Procedures sadece ilk kez çalıstırıldıklarında derlenirler. Daha sonraki çalıstırma islemlerinde derlenmezler. Bu sayede çalısmalarımızda hız kazanmıs oluruz. Birkaç çesit stored procedure vardır. Bunlardan bazıları asagıdaki gibidir: System Stored Procedure: sp_ ön eki ile baslayan saklı yordamlar, SQL Server tarafından tanımlanmıs saklı yordamlardır. master veritabanında saklanırlar. Bu Store Procedures, herhangi bir veritabanı üzerinde sistemle ilgili yönetimsel islemler için kullanılırlar. Extended Stored Procedure: Genisletilmis anlamında xp_ ön eki ile baslayan bu saklı yordamlar, SQL Server’ın dısında çalıstırılan dinamik baglantı kütüphaneleridir (DLL). Local Stored Procedure: Biz de SQL Server üzerinde saklı yordamlar olusturabiliyoruz. Bunlara da yerel store procedures denir. Olusturdugumuz veritabanının Stored Procedure alt baslıgı altında, yerel saklı yordamlarla ilgili, stored procedure ekleme, silme, düzeltme gibi islemleri gerçeklestirebiliriz. Olusturdugumuz veya var olan saklı yordamları kullandıgımızda birçok avantaj elde ederiz. Bunlardan bir kaçı dolayısıyla stored procedurekullanım sebepleri asagıdaki gibidir: - Store procedures, SQL Server’ a esneklik ve hız kazandırırlar. - Önceden derlenmis oldugu için, normal kullandıgımız bir SQL sorgusunun tekrar tekrar çalıstırılmasına nazaran daha fazla performans elde etmemizi saglarlar. - SQL Server üzerinde tutuldugundan, yükü istemci tarafına degil de, sunucu tarafına yükleyerek programımızın performansını arttırır. (Tabi bu bir seçimdir. Sunucumuz güçlüyle bu seçimi tercih edebilirsiniz.) - Bir kez yazılıp, tekrar tekrar kullanıldıgı için modüler bir yapıda program gelistirmis oluruz. - Aynı T-SQL cümlecigini birden fazla yerde kullanacagımız zaman, bunu bir stored procedurehaline getirerek, kullanımını sadece ismini çagırma ile gerçeklestirebiliriz. - Belirli girdi ve çıktı parametreleri oldugu için, saklı yordamların kullanımı ile güvenlik açısıdan kendimizi saglama almıs oluruz. - Ag trafigini azaltır. Istemci tarafından birçok satıra sahip SQL komutunun sunucuya gitmesindense, sadece saklı yordamın adının sunucuya gitmesi agı daha az mesgul etmis olur. Yerel Stored procedureOlusturma Ilk olarak Sql Server'i açarız. Daha sonra Query Analyzaer'i açarız ve asagıdaki kodları yazarız. Asagıdaki store procedure bize müsteriye ait siparisleri geri döndürür. Store procedure ile yeni bir kayıt eklemek için asagıdaki kodları yazabiliriz. @CategoryName, @Description, @Picture adında dısarıdan 3 deger alır ve bu degerleri yeni bir kayıt olarak ekler. Bu store procedures'i çalıstırmak için yazmamız yeterli olacaktır. Simdi Isterseniz ekledigimiz bu kaydı silelim, Silme islemimizi de yaptıktan sonra artık güncelleme islemini de yapabiliriz Evet store prosedürlerin de sonuna geldik. Bir sonraki makalemizde görüsmek üzere.
26 Kas 2006 DATALIST NESNESİNİN HORIZONTAL/VERTICAL OLARAK GÖSTERİLMESİ Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 1 Yorum Datalist nesnesi veritabanından ya da bir veri kaynağındaki nesneleri Web sayfalarımızda görüntülememize yarar. Datalist nesnesi bir web sitesi ya da web projesi yaparken mutlaka kullanılacak kontrollerden birisidir. Örneğin bir ürün bilgisini dataListte gösterebiliriz.2 kontrolde de "header template", "item template" ve "footer template" bölümleri bulunmaktadır. Programcılar bu bölümler içerisinde yapacakları degisiklikler ile kontrolleri özellestirebilmektedirler ("template" kullanımları kod örnekleri ile daha net anlasılacaktır). Adlarından da anlasılacagı üzere "header" ve "footer" kalıpları ("template") bas ve son kısımları kontrol etmektedir, "item" kalıbı ise tekrarlanan veriyi yönetmektedir. "DataGrid" kontrolünde "item template" sütunlara karsılık gelmektedir. Iki kontrolün birbirleri ile temel farkları incelenirse; "DataGrid" ve "DataList" kontrolleri veriyi güncelleme yetenegine sahiptirler."DataGrid" i "DataList" ten farklılastıran özellikler ise sayfalama ve sıralamadır. Fazla uzatmadan örnege geçelim Bunun için projemize ilk olarak bir adet Datalist Kontrolü ekleyelim; Datalistimizi ekledikten sonra; önümüzde iki islem adımı var; 1- Veritabanına baglanmak. 2- Datalist içerisinde görüntüleyecegimiz HTML Tablosunu olusturmak (Seçenege göre degisebilir ben genel olarak HTML Tablo kullanırım) Adımdan baslarsak eger ilk olarak Datalistin baglanacagı veri kaynagını olusturmamız gerekebilir(ACCESS,SQL SERVER, XML dosyası olabilir.) Ben bu projede Access veritabanı kullanacagım. Veritabanım adı her zamanki gibi urunler.mdb J Tablomun içerisindeki Tablonun adı tblUrunler' dir. Bu tablo içerisinde asagıdaki alanlar bulunmaktadır. Tablo içerisindeki bilgileri gördükten sonra, Baglantımızı olusturabiliriz. private System.Data.OleDb.OleDbConnection Cnn; private System.Data.OleDb.OleDbDataAdapter Da; private System.Data.DataSet Ds; private void SetCnn() { Cnn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db/urunler.mdb")); } Baslantı Nesnemizi olusturduktan sonra, Datalistimizi baglayacagımız tablodan verileri çekmek için bir DataTable döndüren bir function yazalım. private System.Data.DataTable DataDoldur() { SetCnn(); if (Cnn.State == ConnectionState.Closed) Cnn.Open(); Da = new System.Data.OleDb.OleDbDataAdapter("Select * from tblUrunler",Cnn); Ds = new DataSet(); Da.Fill(Ds, "Table"); return Ds.Tables[0]; } Functionumuzu yazdıktan sonra geriye sadece bunu çagırmak kalır ve bunu da form yüklenirken yapabiliriz. protected void Page_Load(object sender, EventArgs e) { DataList1.DataSource = DataDoldur(); DataList1.DataBind(); } } Simdi veriler Dataliste gelir fakat ekranda görüntülenmez çünkü ekranda görüntülemek için Datalist içerisinde görüntüleyecegimiz verileri yazmadık. Bunun için sayfamızın HTML Designına gelip; HTML içerisinde asagıdaki gibi tabloyu ekleyebiliriz. Burada dikkat edilmesi gereken kısım verilerin ItemTemplate içerisinde görüntülenecegidir. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DataList ID="DataList1" runat="server" Style="z-index: 101; left: 36px; position: absolute; top: 20px" Height="312px" Width="556px" ShowFooter="False"> <ItemTemplate> <table border=1> <tr> <td style="width: 223px"> Ürün ID:</td> <td style="width: 267px"><%# DataBinder.Eval(Container.DataItem,"fldUrunID")%> </td> <td rowspan="5" style="width: 281px" align="center"> <asp:Image ID="Image1" runat="server" ImageUrl=<%# DataBinder.Eval(Container.DataItem,"fldUrunResmi")%>/> </td> </tr> <tr> <td style="width: 223px; height: 21px"> Ürün Kodu:</td> <td style="width: 267px; height: 21px"><%# DataBinder.Eval(Container.DataItem,"fldUrunKodu")%> </td> </tr> <tr> <td style="height: 23px;" colspan="2"> Ürün Açıklama</td> </tr> <tr> <td colspan="2" rowspan="2" style="height: 21px"> <%# DataBinder.Eval(Container.DataItem,"fldAciklama")%> </td> </tr> <tr> </tr> </table> </ItemTemplate> </asp:DataList> </div> </form> </body> </html> HTML içerisinde verilerimizin görüntülenecegi yerleri ayarladıktan sonra Design kısmına geri dönersek; Gibi bir görüntü karsımıza çıkar. Simdi hersey hazır ve sayfamızı çalıstırıp verileri ekranda gösterebiliriz. Ama ilk olarak görünümü biraz daha görüntülemek için Datalist üzerinde Sag tus + Auto Format Diyerek Datalistimize bir stil seçebiliriz. Sayfamızı çalıstırırsak; Verilerimiz görüntülenir, fakat farkettiyseniz veriler altalta geliyor. Eger Form_Load olayına asagıdaki kodu eklersek protected void Page_Load(object sender, EventArgs e) { DataList1.DataSource = DataDoldur(); DataList1.RepeatColumns = 2;//Yanyana listelenecek kayıt sayısı DataList1.DataBind(); } Artık Sayfamızda yanyana 2 kayıt gelecektir. Bu özelligi RepeatColumns özelligi ile ayarladık. Simdi projemizi tekrar çalıstırırsak; Ortaya çok güzel bir görüntü çıkar :) Baska bir makalede görüsmek üzere, Iyi çalısmalar
26 Kas 2006 Ajax Control Toolkit – Watermark Extender & Popup Control Extender Kategori: AJAX Etiketler: ASP.NETASP.NET Ajax 0 Yorum Merhaba arkadaşlar bu makalemizde Ajax’ın watermark extender ve popup control extender kontrollerinden bahsedeceğiz. Watermark Extender Textbox Watermark ASP.NET textbox kontrollerine uyarı özelligi kazandırılabilen AJAX kontrolüdür. Textbox nesnesi bos oldugunda kullanıcıya mesaj verilebilir. Yine CSS ekleyerek textbox'ın görünüm özelliklerini degistirip kullanıcıyı daha fazla bilgilendirebiliriz. Kullanıcı textbox'tan baska bir yere odaklandıgında belirlemis oldugumuz "watermark text" kullanıcıya gösterilir. Kullanıcıya daha fazla bilgi verilmek istediginde çok kullanıslıdır. Özellikleri; TargetControlID="TextBox1" // Baglı olacagı ASP.NET Textbox kontrolü WatermarkText="Lütfen Mail Adresini Giriniz" // Kullanıcıya verilecek mesaj WatermarkCssClass="watermarkCSS" // Hata verilecegi zaman textbox nesnesine uygulanacak sitilin adı. Nesnemizi ve özelliklerini inceledikten sonra dilerseniz bir örnek ile konuyu daha iyi kavrayalım. Örnegimiz su sekilde olacak; bir web sitesi üzerinde maillist olusturdugumuzu varsayalım. Kullanıcıdan mail adresini isteyip veritabanına kaydedecegiz. Eger kullanıcı mail adresini girmediyse textbox nesnesine bizim belirleyecegimiz sitil ve uyarı mesajını gösterecegiz. Bunun için Visual Studio 2005 açıp bir atlas projesi açalım. Formumuz üzerine 1 adet Textbox, 1 adet Buton ekleyelim. Textbox kullanıcıdan mail adresini alacak ve database'e kaydedecek. (Bu sadece örnek amaçlıdır. Database'e kaydetme islemini bu örnekte yapmayacagız.) Dizaynımızı tamamladıktan sonra, sayfamıza TextBoxWatermarkExtender nesnesi ekleyelim. Evet, form tasarımımızı tamamladık. Simdi artık Projemize atlas özelliklerini kazandırabiliriz. Bunun için Sayfamızın HTML kısmını açıp ilk olarak bir textbox için bir CSS olusturalım. <style type="text/css"> .SemSitil { background-color: #333366; color:Yellow; } </style> Formumuzun Head tagları arasını yukarıdaki sitil dosyasını ekleyelim. Son adım olarak WatermarkExtender nesnesini özelliklerini de yazalım. <cc1:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server"> <cc1:TextBoxWatermarkProperties TargetControlID="TextBox1" WatermarkCssClass="SemSitil" WatermarkText="Lütfen E-mail Adresini Giriniz"> </cc1:TextBoxWatermarkProperties> </cc1:TextBoxWatermarkExtender> Evet artık örnegimizi çalıstırabiliriz. Simdi Textbox içerisine girelim; Textbox1 nesnesi içerisine girdigimizde textbox'ın içerisi bosalır. Eger bos bırakıp baska bir yere geçersek yine yukarıdaki gibi bizi uyaracaktır. Eger bir seyler yazarsak yazdıgımız sekilde kalır. Popup Control Extender Popup control extender kontrolü içerige ek olarak eklenen bir açılabilir pencere (Popup) özelligi kazandırır. Bu pencere update panel içerisinde çalısır, bu yüzden server side çalısmasına ragmen sayfanın refresh etmesini engeller. Bu popup ayrıca içerige(HTML Elementleri) eklenecek bilgileri tutar. Bu konrola ait özellikler · TargetControlID - Eklenecek kontorlün ID'si · PopupControlID - Gösterilecek olan popupun ID'si · Position - Popupun gösterilecegi yer. (Left, Right, Top, Bottom, Center) · CommitProperty - Popupun sonucu · CommitScript - Popup sonucuna ek bilgi koymak için script Evet, bu kontrolümüzü de tanıdıktan sonra yeni bir örnek ile bu konuyu da pekistirelim. Örnegimizde bir mail formu tasarlayacagız ve mail gönderecegimiz kisiyi popup pencereden seçtirecegiz. Bunun için projemize yeni bir sayfa daha ekleyelim. Sayfamız üzerine 1- Script Menager 1- PopupControlExtender 1- Update panel 1- Panel 1- RadioButtonList Kontrolü ekleyelim. 1- Textbox 1- Buton ekleyelim Benim tasarlamıs oldugum form asagıdaki gibidir. Simdi ilk olarak AtlasControlToolkit'i projemize import edelim. Imports AtlasControlToolkit Daha sonra RadioButtonList1SelectedIndexChanged ewentine asagıdaki kodları ekleyelim. Protected Sub RadioButtonList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) If Not (String.IsNullOrEmpty(RadioButtonList1.SelectedValue)) Then PopupControlExtender.GetCurrent(Me.Page).Commit(RadioButtonList1.SelectedValue) End If RadioButtonList1.ClearSelection() End Sub Daha sonra sayfamızın HTML kısmına gidip Popup Control Extender kontrolünün özelliklerini ayarlayalım. <atlasToolkit:PopupControlExtender ID="PopupControlExtender1" runat="server"> <atlasToolkit:PopupControlProperties TargetControlID="MyTextBox" PopupControlID="Panel1" CommitProperty="value" CommitScript="e.value += ’;’;" Position="Right" /> </atlasToolkit:PopupControlExtender> HTML deki özellikleri de ayarladıktan sonra artık bu örnegimizi de çalıstırabiliriz. Ilk olarak kime isimli textbox üzerine tıklayalım ve popup formumuz açıldıgını görelim Açılan popup formdan mail gönderecegimiz kisiyi seçelim; Sem Göksu'yu seçtim ben (: Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Sem GÖKSU MCP | MCAD.NET Örnek Kodlar için mail adresimi kulalnabilirsiniz askisem@hotmail.com Kaynaklar http://atlas.asp.net
26 Kas 2006 Ajax Control Toolkit – FilteredTextbox Extender Kategori: AJAX Etiketler: ASP.NETASP.NET Ajax 0 Yorum Merhaba arkadaşlar bu makalemizde Ajax Filtered Textbox Extender kontrolünün nasıl kullanıldığına göz atacağız. FilteredTextbox Extender Açıklama: FilteredTextBox, kullanıcıların textbox içerisine geçersiz karakter girmelerini engelleyen Atlas kontrolüdür. Örnegin sadece sayısal degerleri girmemiz, yâda sadece küçük harf girmemize izin veren bunun dısındaki karakterleri kabul etmeyen atlas kontrolüdür. Özellikleri: · TargetControlID - Filtrelenecek atlas kontrolünün ID'si · FilterType - Filtreleme tipini belirler (Numbers, LowercaseLetters, UppercaseLetters, ve Custom. Eger Custom Seçilirse ValidChars içerisinde izin verilecek karakterler yazılır) · ValidChars - Custom Type seçilmisse Geçerli olacak karakterler bura da belirtilir. Örnek Uygulama: Numbers , LowercaseLetters , UppercaseLetters , ve Custom özelliklerini daha iyi anlamamız için bir örnek uygulama yapacagız. Visual Studio içerisinde yeni bir atlas projesi olusturalım. Daha Sonra projemize 4 adet Textbox, 4 adet label ve 4 adet FilteredTextBox kontrolü ekleyelim. 4 filtreleme tipini de bu textboxlarda inceleyecegiz. Benim tasarlamıs oldugum sayfa asagıdaki gibidir. 1. Textbox da Custom Tipi yani bizim belirleyecegimiz karakterleri, 2. textbox da yalnızca küçük harfteki karakterlere, 3. textbox da sadece büyük harfteki karakterlere, 4. textbox da da sadace Numeric degerlere izin veren FilteredTextboxExtender Atlas özellikleri yazacagız. Custom özellik için yazacagımız FilteredTextboxExtender Özellikleri; <asp:TextBox ID="txtCustom" runat="server" Font-Names="Verdana" Font-Size="Small"></asp:TextBox> <asp:Label ID="Label1" runat="server" Text="Custom" Font-Bold="True" Font-Names="Verdana" Font-Size="Small"></asp:Label> <cc1:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" runat="server"> <cc1:FilteredTextBoxProperties FilterType="Custom, Numbers" TargetControlID="txtCustom" ValidChars=",." /> </cc1:FilteredTextBoxExtender> Burada sadece Numeric degerlere ve "," , "." Karakterlerine izin verilir. lowercaseLetters özellik için yazacagımız FilteredTextboxExtender Özellikleri; <asp:TextBox ID="txtKucukHarf" runat="server" Font-Names="Verdana" Font-Size="Small"></asp:TextBox> <asp:Label ID="Label2" runat="server" Text="Küçük Harf" Font-Bold="True" Font-Names="Verdana" Font-Size="Small"></asp:Label> <cc1:FilteredTextBoxExtender ID="FilteredTextBoxExtender2" runat="server"> <cc1:FilteredTextBoxProperties FilterType="lowercaseLetters" TargetControlID="txtKucukHarf" /> </cc1:FilteredTextBoxExtender> Burada sadece küçük harf girisine izin verilecek. UppercaseLetters özellik için yazacagımız FilteredTextboxExtender Özellikleri; <asp:TextBox ID="txtBuyukHarf" runat="server" Font-Names="Verdana" Font-Size="Small"></asp:TextBox> <asp:Label ID="Label3" runat="server" Text="Büyük Harf" Font-Bold="True" Font-Names="Verdana" Font-Size="Small"></asp:Label> <cc1:FilteredTextBoxExtender ID="FilteredTextBoxExtender3" runat="server"> <cc1:FilteredTextBoxProperties FilterType="UppercaseLetters" TargetControlID="txtBuyukHarf" /> </cc1:FilteredTextBoxExtender> Burada sadece büyük harf girisine izin verilecek. Numbers özellik için yazacagımız FilteredTextboxExtender Özellikleri; <asp:TextBox ID="txtNumeric" runat="server" Font-Names="Verdana" Font-Size="Small"></asp:TextBox> <asp:Label ID="Label4" runat="server" Text="Numeric" Font-Bold="True" Font-Names="Verdana" Font-Size="Small"></asp:Label> <cc1:FilteredTextBoxExtender ID="FilteredTextBoxExtender4" runat="server"> <cc1:FilteredTextBoxProperties FilterType="Numbers" TargetControlID="txtNumeric" /> </cc1:FilteredTextBoxExtender> Burada da sadece Numeric degerlere izin verilecektir. Son olarak projemizi çalıstıralım ve test edelim. Görüldügü gibi 1. textboxda sadece Numeric degerler ve geçerli kıldıgımız "," ve "." 2. textboxda yalnızca küçük harf 3. textbox da yalnızca büyük harf. 4. textboxda da sadece Numeric degerlere izin verildi. Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim. Sem GÖKSU MCP | MCAD.NET Örnek Kodlar için mail adresimi kullanabilirsiniz askisem@hotmail.com Kaynaklar http://atlas.asp.net