Sem Göksu
Sem Göksu
Yazılım · Yolculuk · Fenerbahçe
ASP.NET

ASP.NET Custom Control Geliştirme – Karakter Sayan Textbox

Merhaba arkadaşlar, custom controller dizisi makalesine textbox içerisine girilen karakterleri sayacak ve bu textbox’ı limitlendirecek yeni bir kontrol yazacağız…

27 Mart 2007 3 dk okuma 84 5
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ÖKSU
MCP | MCAD.NET | MCTS | ASP.NET MVP

Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com  

Kaynaklar

www.codeproject.com

Etiketler: #ASP.NET #C#
Paylaş:

Yorumlar (5)

A
Ahmet 24 Oca 2009 22:27

Text özeliligi çalismiyor.FckEditör.Value gibi texte girilen degeri alamiyorsun.

K
kerim 03 Haz 2009 10:42

saol eline sağlık

G
Gökhan SARI 07 Eki 2009 10:29

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.

B
bayram 19 Eyl 2011 02:41

Text özelliği çalışmıyor....

S
selçuk 11 Eki 2011 01:02

text özelliğini çalıştırabilen varsa yardıma ihtiyacım var

Yorum bırak

* Yorumlar moderasyon sonrası yayınlanır. E-posta gizli tutulur.