我将一个textbox和一个img组合自定义成了一个复合控件;
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;namespace CustomControls
{
public class CalenderTextBox:CompositeControl
{
private Image imgeCalendar;
private TextBox txtCalendar;
private string _textCalendarID; public string Text
{
get
{
EnsureChildControls();
return txtCalendar.Text;
}
set
{
EnsureChildControls();
txtCalendar.Text = value;
}
} public string CssClass
{
get
{
EnsureChildControls();
return txtCalendar.CssClass;
}
set
{
EnsureChildControls();
txtCalendar.CssClass = value;
}
} public string ID
{
get
{
EnsureChildControls();
if (string.IsNullOrEmpty(txtCalendar.ID))
{
_textCalendarID = Guid.NewGuid().ToString("N") + "$txtCalendar";
return _textCalendarID;
}
return txtCalendar.ID;
}
set
{
EnsureChildControls();
if (string.IsNullOrEmpty(value))
{
_textCalendarID = Guid.NewGuid().ToString("N") + this.txtCalendar.UniqueID;
}
else
{
_textCalendarID = this.txtCalendar.UniqueID + "$" + value;
}
}
} public string ReadOnly
{
get
{
EnsureChildControls();
return txtCalendar.ReadOnly.ToString();
}
set
{
EnsureChildControls();
if (value.ToLower() == "true")
{
txtCalendar.ReadOnly = true;
}
else
{
txtCalendar.ReadOnly = false;
}
}
} public string ImageUrl
{
get
{
EnsureChildControls();
return imgeCalendar.ImageUrl;
}
set
{
EnsureChildControls();
imgeCalendar.ImageUrl = value;
//imgeCalendar.Attributes.Add("onclick", "WdatePicker({el:$dp.$('" + txtCalendar.ClientID + "'),dateFmt:'yyyy/MM/dd'})");
imgeCalendar.Attributes.Add("onclick", "CalendarTextOnClick()");
}
} protected override void RecreateChildControls()
{
EnsureChildControls();
} protected override void CreateChildControls()
{
Controls.Clear();
txtCalendar = new TextBox();
txtCalendar.ID = this.ID;
imgeCalendar = new Image();
this.Controls.Add(txtCalendar);
this.Controls.Add(imgeCalendar);
} protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0", false);
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0", false);
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
txtCalendar.ReadOnly = true;
txtCalendar.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
imgeCalendar.RenderControl(writer);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
}
}
}
我想通过attribute.add的方式给img赋属性,请问怎样修改代码
以前一直没做过自定义控件,现在正试着练习,请高手赐教;
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;namespace CustomControls
{
public class CalenderTextBox:CompositeControl
{
private Image imgeCalendar;
private TextBox txtCalendar;
private string _textCalendarID; public string Text
{
get
{
EnsureChildControls();
return txtCalendar.Text;
}
set
{
EnsureChildControls();
txtCalendar.Text = value;
}
} public string CssClass
{
get
{
EnsureChildControls();
return txtCalendar.CssClass;
}
set
{
EnsureChildControls();
txtCalendar.CssClass = value;
}
} public string ID
{
get
{
EnsureChildControls();
if (string.IsNullOrEmpty(txtCalendar.ID))
{
_textCalendarID = Guid.NewGuid().ToString("N") + "$txtCalendar";
return _textCalendarID;
}
return txtCalendar.ID;
}
set
{
EnsureChildControls();
if (string.IsNullOrEmpty(value))
{
_textCalendarID = Guid.NewGuid().ToString("N") + this.txtCalendar.UniqueID;
}
else
{
_textCalendarID = this.txtCalendar.UniqueID + "$" + value;
}
}
} public string ReadOnly
{
get
{
EnsureChildControls();
return txtCalendar.ReadOnly.ToString();
}
set
{
EnsureChildControls();
if (value.ToLower() == "true")
{
txtCalendar.ReadOnly = true;
}
else
{
txtCalendar.ReadOnly = false;
}
}
} public string ImageUrl
{
get
{
EnsureChildControls();
return imgeCalendar.ImageUrl;
}
set
{
EnsureChildControls();
imgeCalendar.ImageUrl = value;
//imgeCalendar.Attributes.Add("onclick", "WdatePicker({el:$dp.$('" + txtCalendar.ClientID + "'),dateFmt:'yyyy/MM/dd'})");
imgeCalendar.Attributes.Add("onclick", "CalendarTextOnClick()");
}
} protected override void RecreateChildControls()
{
EnsureChildControls();
} protected override void CreateChildControls()
{
Controls.Clear();
txtCalendar = new TextBox();
txtCalendar.ID = this.ID;
imgeCalendar = new Image();
this.Controls.Add(txtCalendar);
this.Controls.Add(imgeCalendar);
} protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0", false);
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0", false);
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
txtCalendar.ReadOnly = true;
txtCalendar.RenderControl(writer);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
imgeCalendar.RenderControl(writer);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();
}
}
}
我想通过attribute.add的方式给img赋属性,请问怎样修改代码
以前一直没做过自定义控件,现在正试着练习,请高手赐教;
解决方案 »
- 用js 判断浏览器类型
- 请教一个有关CacheDependency的问题,如可则加高分【【【高分求解】】】
- 求一个接收flex的URLRequest类请求的asp.ent服务器端代码
- 如何在页面播放视频(.flv)
- 关于系统上传文件
- 关于Steema的WebChart的问题
- [光标] 怎么样让网页一打开,光标就自动停在某个文本框等待输入?
- 能不能在网页里执行windows的系统命令如 cmd、msconfig等等
- 关于生成类似于Windows中,含有图片的文件夹的缩略图的问题~~~~~~~~~~~~~~~!!!!!!!!
- 求教 !!! C#里如何使用 ADODB 来访问 ACCESS 和 SQL 呢??
- 菜鸟请教:求一段JS的代码,请指点一下!!
- 提示:“无法将类型为“SQLServerDAL.houseinfoDAL”的对象强制转换为类型“IDAL.Ihouseinfo”。
Cnd.Attributes.Add("onmouseup","jsonmouseup()");
{
get
{
return imgeCalendar.Attributes;
}
set
{
imgeCalendar.Attributes = value;
}
}
您说的方式不行,AttributeCollection是只读的
只get就好了,这样,你调用Attributes.Add时,也是指向这个Image的
public AttributeCollection Attributes
{
get
{
return imgeCalendar.Attributes;
}
}
这两天一直忙,没上来揭帖;