ASP.NET Custom Control Geliştirme – Karakter Sayan Textbox
27.03.2007 23:58:43
Merhaba arkadaşlar, custom controller dizisi makalesine textbox içerisine girilen karakterleri sayacak ve bu textbox’ı limitlendirecek yeni bir kontrol yazacağız…
Puan:
     

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 girdiğimizi kontrol etmemiz gerekir. Örneğin 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. İşte biz bu sorunu çözmek için hem limitlenen hemde karakter sayan bir textbox yazacağız…

İlk olarak yeni bir web control library projesi oluşturalım.

Evet, projemizi oluşturduktan sonra kodlamaya başlı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

{

 

//İlk 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 oluşturulurken 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 özelliği olacak…

 

        [Category("LimitliTextbox")]

        [Browsable(true)]

        [Description("Textbox'ın Text'i")]

        public string Text

        {

            get { return _Text; }

            set { _Text = value; }

        }

 

//Şimdi kontrolümüzü oluşturuyoruz…

 

        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 Oluşturulamadı...");

                writer.RenderEndTag();

            }
        }
   }

}

Kontrolümüzü oluşturduktan sonra; projemize yeni bir web site ekleyelim. Daha sonra Web projesinin referanslarına bu web control libraryi ekleyelim. Şimdi toolboxımıza gidelim bakalım kontrol gelmişmi?

Sem Limitli textbox kontrolü gelmiş… Sayfamıza yeni bir SemLimitliTextbox ekliyelim ve özelliklerini ayarlıyalım...

Textbox içerisine en fazla 100 karakter girilsin… Şimdi web projemizi çalıştıralım…

Şimdi textbox içerisine birşeyler yazalım…

Gerçekten de sayıyor… : )

Bu makalemizinde de sonuna geldik. Teşekkür eder iyi çalışmalar 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

 
Puan: