السلام عليكم
ما هي الخطوات التى يجب ان اتبعها لكي اصنع web control library بسيط جدا.
وشكرا
السلام عليكم
ما هي الخطوات التى يجب ان اتبعها لكي اصنع web control library بسيط جدا.
وشكرا
شكرا اخ عبد الله
انا اعرف مبدا ال OOP.
ان اريد مثال بسيط. كيف ابدا ؟
aaaaaForum كتب:
أخي العزيز، سؤالك عام جدا.
يجب أن تحدد الهدق من dll التي تريد إنشاءها، ما هو مشروعك؟
اقتباسمساحة تبدأ من 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
اريد فقط معرفة الخطوات الاولى
مثلا اظهار Label خلفيته حمراء
الكود دة بيعمل خط تحت الـ 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);
}
}
}شكرا لكم
وهذا كود كنترول قمت بتصميمه و يمكنك من اختيار التاريخ من 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
}
}haosman كتب:الكود دة بيعمل خط تحت الـ Textونصيحة عليك بقراءة الكتاب دة
Developing Microsoft® ASP.NET Server Controls and Components
أتمنى لوتعطيني رابط هذا الكتاب
محبكم/ أبو أنس
المفيد:
3أسطر برمجية للتنقل بإستخدام مفتاح الإدخال
درس بناء واستخدام أدوات المستخدم ASP.NET Web User Controls
خدمة نسيت كلمة المرورمع الشرح ASP.NET
طريقة سهلة للتعامل مع ListBox و Combobox
إضافة الخصائص الى أدوات الويب ASP.NET
موقع لبيع الكمبيوترات مع الكود ASP.NET
كنترول بسيط مع الكود HoverButtonTextBox
برنامج لإنشاء Propertys مع الكود
كيف نختار بين DataGrid,DataList,Repeater
روابط برامج مهمة ASP.NET مع أكوادها
[islamonline]المفيد الدعوي[/islamonline]

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