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…
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
Yorumlar (5)
Text özeliligi çalismiyor.FckEditör.Value gibi texte girilen degeri alamiyorsun.
saol eline sağlık
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.
Text özelliği çalışmıyor....
text özelliğini çalıştırabilen varsa yardıma ihtiyacım var