الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

web control library

مغلق
بدأه aaaaaForum في 10 مارس 2006 · 10 رد · 1,025 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ما هي الخطوات التى يجب ان اتبعها لكي اصنع web control library بسيط جدا.

وشكرا

#2

تحتاج أن تعرف مبداً ال OOP.

MCP

MCTS:.Net Framework 2.0: Web Applications

MCPD:Web Developer

#3

شكرا اخ عبد الله

انا اعرف مبدا ال OOP.

ان اريد مثال بسيط. كيف ابدا ؟

#4
aaaaaForum كتب:
شكرا اخ عبد الله

انا اعرف مبدا ال OOP.

ان اريد مثال بسيط. كيف ابدا ؟

أخي العزيز، سؤالك عام جدا.

يجب أن تحدد الهدق من dll التي تريد إنشاءها، ما هو مشروعك؟

logo.gif
استضافة ويندوز


اقتباس

مساحة تبدأ من 2000 ميجا بايت بسعر 1.99 دولار شهريا.ا

اقتباس

ASP.NET 1.1-2.0-3.0-3.5-4.0-4.5.1 / MVC ASP.NET / PHP 5.x / ColdFusion / MSSQL 2008 & 2012 / MYSQL

#5

اريد فقط معرفة الخطوات الاولى

مثلا اظهار Label خلفيته حمراء

#6

الكود دة بيعمل خط تحت الـ Text

ونصيحة عليك بقراءة الكتاب دة

Developing Microsoft® ASP.NET Server Controls and Components

، بيتكلم عن كل حاجة بخصوص الـ web control، الكتاب أكتر من ممتاز اصبر عليه وهتلاقى نتيجة كويسة ان شاء الله.

using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace ServerControls {

    
    [
    DefaultProperty("Text")
    ]
    public class HoverLabel : WebControl {
        
        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The text rendered in the label."),
        ]
        public virtual string Text {
            get {
                string s = (string)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }
            set {
                ViewState["Text"] = value;
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("The text to display in the status bar."),
        ]
        public virtual string StatusBarText {
            get {
                string s = (string)ViewState["StatusBarText"];
                return((s == null) ? String.Empty : s);
            }
            set {
                ViewState["StatusBarText"] = value;
            }
        }

        protected override HtmlTextWriterTag TagKey {
            get {
                return HtmlTextWriterTag.Div;
            }
        }

        // This ensures that there are no child controls.
        protected override ControlCollection CreateControlCollection() {
            return new EmptyControlCollection(this);
        }

        protected override void AddAttributesToRender(HtmlTextWriter writer) {
            // Invoke the method of the base class to render
            // style and other attributes that WebControl renders.
            base.AddAttributesToRender(writer);
            writer.AddAttribute("onmouseover", "this.style.textDecoration = 'underline'; status = '" + StatusBarText + "';");
            
           
            writer.AddAttribute("onmouseout", "this.style.textDecoration = 'none'; status = '';", false);
        }

        protected override void RenderContents(HtmlTextWriter writer) {
            writer.Write(Text);
              
        }       
    }
}
#7

شكرا لكم

#8

وهذا كود كنترول قمت بتصميمه و يمكنك من اختيار التاريخ من popup window مثلا و يقوم بعمل validation للقيمة المدخلة للتحقق من انها تاريخ قبل ارسال الفورم.تستطيع كذلك اضافة هذا الكنترول الى الToolBox في الفيجوال ستيديو دوت نت و عمل Drag له على الصفحة. الصورة المرفقة تبين كيف يظهر الكنترول عند تشغيل الصفحة.

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Web.UI.HtmlControls;
namespace XYZControls
{
	/// <summary>
	/// Summary description for DatePicker.
	/// </summary>
	[DefaultProperty("Text"), 
  ToolboxData("<{0}:DatePicker runat=server></{0}:DatePicker>")]
	public class DatePicker : System.Web.UI.WebControls.WebControl,IPostBackDataHandler,INamingContainer
	{
  private string text;
  private DateTime date;
  private string format="dd-MM-yyyy";
  private string errorMessage;
  private bool required;
  

  [Bindable(true), 
 	 Category("Appearance"), 
 	 DefaultValue("")] 
  public string Text 
  {
 	 get
 	 {
    return text;
 	 }

 	 set
 	 {
    text = value;
    base.ChildControlsCreated = false;
 	 }
  }
  public string DateFormat
  {
 	 get
 	 {
    return format;
 	 }

 	 set
 	 {
    format = value;
 	 }
  }
  public bool Required
  {
 	 get
 	 {
    return required;
 	 }

 	 set
 	 {
    required = value;
 	 }
  }
  public DateTime Date 
  {
 	 get
 	 {
    if(text!=null && !"".Equals(text))
    return DateTime.ParseExact(text,format,null);
    else
    return DateTime.MinValue;
 	 }

 	 set
 	 {
    date = value;
    text = date.ToString(format);
 	 }
  }
  public string ErrorMessage 
  {
 	 get
 	 {
    return errorMessage;
 	 }

 	 set
 	 {
    errorMessage = value;
 	 }
  }
  

  protected override void CreateChildControls()
  {
    base.CreateChildControls ();
    
    TextBox tb = new TextBox();
    tb.ID = this.ClientID+"TB";
    tb.CssClass = this.CssClass;
    tb.MaxLength = 10;
    tb.Text = this.text;
    tb.ReadOnly = true;
    HyperLink hl = new HyperLink();
    hl.CssClass = this.CssClass;
    hl.ImageUrl = System.Web.HttpContext.Current.Request.ApplicationPath +"/images/monthview/icon_mview.gif";
    hl.NavigateUrl = "javascript:MonthPicker('" + this.ClientID+"_"+tb.ClientID + "');";
    CompareValidator cv = new CompareValidator();
    cv.ID = this.ID+"Val";
    cv.ControlToValidate = this.ClientID+"TB";
    cv.Display = ValidatorDisplay.Dynamic;
    cv.ErrorMessage = this.errorMessage;
    cv.Operator = ValidationCompareOperator.DataTypeCheck;
    cv.Type = ValidationDataType.Date;
    HtmlGenericControl hgc = new HtmlGenericControl("div");
    hgc.Attributes["class"] = this.CssClass;
    hgc.Controls.Add(tb);
    hgc.Controls.Add(hl);
    hgc.Controls.Add(cv);
    LiteralControl DateHI = new LiteralControl("<input type='hidden' name='"+this.ClientID+"' value='"+this.text+"'>");
    hgc.Controls.Add(DateHI);
    tb.Attributes["onblur"] = "this.form."+this.ClientID+".value=this.value;";
    
    

    if(required)
    {
   	 RequiredFieldValidator rv = new RequiredFieldValidator();
   	 rv.ID = this.ID+"Val1";
   	 rv.ControlToValidate = tb.ID;
   	 rv.Display = ValidatorDisplay.Dynamic;
   	 rv.ErrorMessage = this.errorMessage;
   	 hgc.Controls.Add(rv);
    }
    Controls.Add(hgc);
 	 
 	 
  }
  private CompareValidator GetDateFieldValidator(string id, string controlToValidate, string message)
  {
 	 CompareValidator cv = new CompareValidator();
 	 cv.ID = id;
 	 cv.ControlToValidate = controlToValidate;
 	 cv.Display = ValidatorDisplay.Dynamic;
 	 cv.ErrorMessage = message;
 	 cv.Operator = ValidationCompareOperator.DataTypeCheck;
 	 cv.Type = ValidationDataType.Date;
 	 return cv;
  }

  protected override void Render(HtmlTextWriter writer)
  {
 	 base.Render (writer);
 	 if(Context==null)
 	 {

    writer.Write("<span id='DatePicker1' class='date_picker'><div class='date_picker'><input name='DatePicker1TB' type='text' maxlength='10' id='DatePicker1TB' class='date_picker' /><a class='date_picker' href='javascript:MonthPicker('DatePicker1TB');'><img src='images/monthview/icon_mview.gif' alt='' border='0' /></a></div></span>");


 	 }
  }

  protected override object SaveViewState()
  {
 	 return new Triplet(base.SaveViewState(),(this.text!=null ? this.text:string.Empty));
  }
  protected override void LoadViewState(object savedState)
  {
 	 if(savedState is Triplet)
 	 {
    Triplet state = savedState as Triplet;
    base.LoadViewState (state.First);
    this.text = state.Second.ToString();
 	 }
  }
  #region IPostBackDataHandler Members

  public void RaisePostDataChangedEvent()
  {
 	 
  }

  public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
  {
 	 string date = postCollection[postDataKey];
 	 this.text = date;
 	 return false;
  }

  #endregion
	}
}

post-2427-1142534995_thumb.gif

#10

بصراحة انا اشتريته، وسهل تلاقيه على أمازون

هذا الموضوع مغلق.

مواضيع مشابهة