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ış
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