27 Mar 2007 ASP.NET Custom Control Geliştirme – Karakter Sayan Textbox Kategori: ASP.NET Etiketler: ASP.NETC# 5 Yorum Merhaba arkadaşlar, custom controller dizisi makalesine textbox içerisine girilen karakterleri sayacak ve bu textbox’ı limitlendirecek yeni bir kontrol yazacağız…Karakter Sayan Textbox Bazı durumlarda textbox içerisine girilecek karakter sayısı bizim için önemli olabilir. Bu durumlar da textbox içerisindeki karakter sayısını kontrol edip kaç karakter girdigimizi kontrol etmemiz gerekir. Örnegin firmamız için bir sms gönderme programı yazıyorsak bu bizim için çok önemlidir. Toplu sms gönderimi yaparken kullanıcılara gönderilecek sms'in tek seferde yani en fazla 160 karakter girilerek gönderilmesi gerekir. Iste biz bu sorunu çözmek için hem limitlenen hemde karakter sayan bir textbox yazacagız. Ilk olarak yeni bir web control library projesi olusturalım. Evet, projemizi olusturduktan sonra kodlamaya baslıyalım. using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace SemControls { //Ilk olarak toolbox'da kontrolümüze verilecek ismi belirliyoruz.. [DefaultProperty("Text")] [ToolboxData("<{0}:SemLimitliTextbox runat=server></{0}:SemLimitliTextbox>")] public class SemLimitliTextbox : WebControl { string _KarakterLimiti; string _Text; // Kontrol olusturulurken textbox içerisindeki karakteri sayacak ve bunu sınırlandıracak olan javascript kodunu yaziyoruz. protected override void OnInit(EventArgs e) { string script = ""; script += "<script language=\"javascript\">"+System.Environment.NewLine; script += "function textCounter(field, countfield, maxlimit)" + System.Environment.NewLine; script += "{if (field.value.length > maxlimit) field.value = field.value.substring(0, maxlimit);" + System.Environment.NewLine; script += "else countfield.value = maxlimit - field.value.length; }" + System.Environment.NewLine; script += "</script>"; if (!this.Page.IsClientScriptBlockRegistered("SemLimitedTextbox")) { this.Page.RegisterClientScriptBlock("SemLimitedTextbox", script); } } // Property penceresine LimitliTextbox grubu altında karakterLimiti adında yeni bir özellik ekliyoruz. Bu bizim textboxımızı limitlendirecek [Category("LimitliTextbox")] [Browsable(true)] [Description("Textbox'a kaç karakter girilsin?")] public string KarakterLimiti { get { return _KarakterLimiti; } set { _KarakterLimiti = value; } } // Property penceresine LimitliTextbox grubu altında Text adında yeni bir özellik ekliyoruz. Bu bizim textboxımızın text özelligi olacak. [Category("LimitliTextbox")] [Browsable(true)] [Description("Textbox'ın Text'i")] public string Text { get { return _Text; } set { _Text = value; } } //Simdi kontrolümüzü olusturuyoruz. protected override void Render(HtmlTextWriter writer) { try { string LimitedTextbox = ""; LimitedTextbox += "<textarea rows=3 name=LimitliTextbox onKeyDown=\"textCounter(this.document.all.LimitliTextbox,this.document.all.KarakterSayisi,"+KarakterLimiti+");\""; LimitedTextbox += "onKeyUp=\"textCounter(this.document.all.LimitliTextbox,this.document.all.KarakterSayisi," + KarakterLimiti + ");\" cols=38 tabindex=5>"+Text+"</textarea>"; LimitedTextbox += "<br/>"; LimitedTextbox += "<input readonly type=text name=KarakterSayisi size=4 maxlength=3 value=\"" + KarakterLimiti + "\" style=\"font-family: Tahoma; font-size: 8pt; border: 1px solid\">"; LimitedTextbox += "<font color=#6699CC face=Verdana size=1> Karakter Daha Yazabilirsiniz...</font>"; writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write(LimitedTextbox.ToString()); writer.RenderEndTag(); } catch { writer.RenderBeginTag(HtmlTextWriterTag.Div); writer.Write("Kontrol Olusturulamadı..."); writer.RenderEndTag(); } } } } Kontrolümüzü olusturduktan sonra; projemize yeni bir web site ekleyelim. Daha sonra Web projesinin referanslarına bu web control libraryi ekleyelim. Simdi toolboxımıza gidelim bakalım kontrol gelmismi? Sem Limitli textbox kontrolü gelmis. Sayfamıza yeni bir SemLimitliTextbox ekliyelim ve özelliklerini ayarlıyalım... Textbox içerisine en fazla 100 karakter girilsin. Simdi web projemizi çalıstıralım. Simdi textbox içerisine birseyler yazalım. Gerçekten de sayıyor. : ) Bu makalemizinde de sonuna geldik. Tesekkür eder iyi çalısmalar dilerim. Sem GÖKSUMCP | MCAD.NET | MCTS | ASP.NET MVP Örnek Kodlar için mail adresimi kullanabilirsinizsemgoksu@semgoksu.com Kaynaklar www.codeproject.com Yorum (5) Ahmet / 24.1.2009 22:27:27 Text özeliligi çalismiyor.FckEditör.Value gibi texte girilen degeri alamiyorsun. kerim / 3.6.2009 10:42:07 saol eline sağlık Gökhan SARI / 7.10.2009 10:29:47 Merhaba eline sağlık öğretici olmuş. Bir şey daha danışmak isterim şu an yorumu yazdığım yerdeki textboxvalidationları sayfa postback olmadan nasıl yapıorsun. Bende senin yorum yaza benzer birşey yapmak istiyorum yardımcı olabilirsen çok sevinirim. bayram / 19.9.2011 02:41:44 Text özelliği çalışmıyor.... selçuk / 11.10.2011 01:02:40 text özelliğini çalıştırabilen varsa yardıma ihtiyacım var Yorum Yaz * Ad Soyad: * Email: * Message:
Yorum (5) Ahmet / 24.1.2009 22:27:27 Text özeliligi çalismiyor.FckEditör.Value gibi texte girilen degeri alamiyorsun. kerim / 3.6.2009 10:42:07 saol eline sağlık Gökhan SARI / 7.10.2009 10:29:47 Merhaba eline sağlık öğretici olmuş. Bir şey daha danışmak isterim şu an yorumu yazdığım yerdeki textboxvalidationları sayfa postback olmadan nasıl yapıorsun. Bende senin yorum yaza benzer birşey yapmak istiyorum yardımcı olabilirsen çok sevinirim. bayram / 19.9.2011 02:41:44 Text özelliği çalışmıyor.... selçuk / 11.10.2011 01:02:40 text özelliğini çalıştırabilen varsa yardıma ihtiyacım var
Ahmet / 24.1.2009 22:27:27 Text özeliligi çalismiyor.FckEditör.Value gibi texte girilen degeri alamiyorsun.
Gökhan SARI / 7.10.2009 10:29:47 Merhaba eline sağlık öğretici olmuş. Bir şey daha danışmak isterim şu an yorumu yazdığım yerdeki textboxvalidationları sayfa postback olmadan nasıl yapıorsun. Bende senin yorum yaza benzer birşey yapmak istiyorum yardımcı olabilirsen çok sevinirim.