Ana içeriğe atla

ASP.Net Custom Controls yaparken

ASP.Net ile kendinize ait server control ler hazırlamak istiyorsanız yapmanız gerekenler kısaca şu şekilde.

1 - Elinizdeki Web sitesinin bulunduğu Solution altına bir adet Windows ClassLibrary ekleyin.
2 - websitenize add reference deyip projects sekmesinden library nizi seçin.
3 - Bu class library altına bir adet class ekleyin. (Örneğin adı UTextBox ben textBox yapımını anlatacağım.)
4 - Bu class ı System.Web.UI.WebControls.TextBox sınıfından türetmeniz gerekmektedir ve class ın üst görünümü şu şekilde olmalı


[ControlBuilder(typeof(TextBoxControlBuilder))]
[ValidationProperty("Text")]
[SupportsEventValidation]
[ControlValueProperty("Text")]
[DataBindingHandler("System.Web.UI.Design.TextDataBindingHandler, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[DefaultProperty("Text")]
[DefaultEvent("TextChanged")]
[Designer("System.Web.UI.Design.WebControls.PreviewControlDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]
[ParseChildren(true, "Text")]
[ToolboxData("<{0}:UTextBox ID=\"txt\" runat=server Text=\"\">")]
public class UTextBox : TextBox
{


4 - Bu sınıf altında yer alan property ler de şu şekilde olmalı.
///
/// Alabileceği en kısa uzunluk değeri
///

private int _MinLength = 0;
[DefaultValue(typeof(int), "0")]
[Category("Behavior")]
[Bindable(true)]
[Description("Alabileceği en kısa uzunluk değeri")]
public int MinLength
{
get { return _MinLength; }
set { _MinLength = value; }
}


#region ScrollBarHidden
private bool _ScrollBarHidden = true;
///
/// Scroll Bar n gizli olmas veya olmamas durumu i‡in
///

[DefaultValue(true)]
[Category("Appearence")]
[Bindable(false)]
[Description("ScrollBar ın görünüp görünmemesi")]
public bool ScrollBarHidden
{
get { return _ScrollBarHidden; }
set { _ScrollBarHidden = value; }
}
#endregion

5 - Class ın OnLoad fonksiyonu içerisinde sahanın işlevine göre düzenlemeler yapılır.

a. attribute'lar eklenip çıkartılabilir.

protected override void OnLoad(EventArgs e)
{
if (ScrollBarHidden) this.Attributes.Add("style", "overflow :hidden");
}

b. stil vs değiştirilebilir.


if (!this.ReadOnly)
{
string OnfocusStr = "this.className='" + base.CssClass + "Focus';";
}

c. sayfaya js eklenebilir.

this.Page.RegisterClientScriptBlock vb metodlarla da eklenebilir fakat en güzeli js dosyası register etmesi.

AssemblyInfo.cs ye şu eklenmeli

[assembly: WebResource("CustomControls.GridViewScript.js", "text/javascript")]

OnPreRenderda da şu eklenmeli

string resourceName = "CustomControls.GridViewScript.js";
ClientScriptManager cs = this.Page.ClientScript;
cs.RegisterClientScriptResource(typeof(CustomControls.CustomGridView), resourceName);


6 - PreRender fonksiyonu içerisinde ise sayfanın oluşturulma aşamasının son safhasında düzenlemeler yapabilirsiniz. OnLoad da yaptığınız bazı şeyler burada da yapılabilir. Uzun uzadıya giden ClientID sinin kısaltılması vs vs gibi farklı şeyler de yapılabilir.

Daha derinlere inmek isteyenler için faydalı bir link
Burada da örnek olarak gridview yapılmış

Yorumlar

Bu blogdaki popüler yayınlar

Arkalı Önlü Yazdırma

Yazıcıdan çıktı alırken kağıt israfını önlemek, çok kağıt taşımamak gibi sebeplerle arkalı önlü çıktı almak istiyorsanız teknik şudur: Kağıdın yazdırılan kısmını ve yönünü tespit etmeniz gerekir ki daha sonra yazdırılan kağıtları tekrar yazıcıya koymanız gerekecek. Kendi yazıcınızda bunu anlamak için boş (ya da gereksiz) bir kağıdın bir köşesine kalemle işaret koyun ve herhangi bir deneme sayfası yazdırın, ardından sonuca bakın.  Bendeki yazıcının (Samsung ML-1610) özellikleri şu şekilde: Kağıdın yukarı bakan kısmına yazdırıyor.  Kağıdın üst kısmı içerideki kısım oluyor. Yazdır (Print) dedikten sonra Subset değeri önce odd (tek) sayfalar yazdırılır. Çıkan kağıtlar sırası hiç bozulmadan, (Toplamda tek sayıda sayfa varsa en sonuncu sayfa kenara alınmalı!!!) boş yüzeyleri görünecek şekilde ve kağıdın üst kısmı içeride olacak şekilde yerleştirilir. (Sizde yerleşim farklı olabilir buna dikkat.) Yazdır (Print) dedikten sonra Subset değeri even olanlar Ve REVERSE (TERS) ...

HP notebook fn tuşu iptal etme

Eğer siz de benim gibi fonksiyon tuşlarını (F1, F2, .... , F12) çok kullanan birisiyseniz ve hp notebookunuz ile sürekli olarak fn tuşuna basmanız gerekiyorsa, sorunun çözümü oldukça basit. Bilgisayarınızı yeniden başlatıp f10 tuşu ile bios ayarlarınıza girin. System configuration sekmesinden Active Keys seçeneğini disabled konumuna getirin. Kayıt edip çıkın. İşlem tamamdır.

dünyada kaç tane gerizekalı var

Dünyada kaç tane gerizekalı var şeklinde bir soruya ne söylenebilir ki? Ama aslında internetin geleceği bu soruya cevap bulabilecek şekilde kurgulanmış olacak. Saçma bir soru gibi görünse de, bu sorunun cevaplanması için internet kullanan kişilerin bilgilerinin tutulması ve yazdıklarının anlaşılması gereklidir. Bunun için mevcut teknoloji yeterli değildir. Eğer ki semantik web ya da benzeri bir mimari kullanılarak indexleme sistemleri oluşturulursa, ancak bu sayede bu sorunun cevabı yaklaşık olarak da olsa bulunabilir. Sonuç olarak, önemli olan dünyadaki gerizekalı sayısı değil, akıllı insanların sayısıdır :P Bu yazı aslında, google indexlenmesinin ne kadar hızlı olabileceğini bir arkadaşa ispatlamak amacıyla idi. Yazının yazılması ile indexlenmesi arasında 2 dakika bile geçmedi, hem de ilk sırada :) Detayları bende saklı. ;)