源码共享之:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;namespace Sumanden.DateTimePicker
{
/// <summary>
/// WebCustomControl1 的摘要说明。
/// </summary>
[
    Description("DatePicker writed by Sumanden"),
    DefaultProperty("Text"),
ToolboxData("<{0}:DatePicker runat=server></{0}:DatePicker>")
]
public class DatePicker : System.Web.UI.WebControls.WebControl , System.Web.UI.INamingContainer 
{ protected override void CreateChildControls() 
{ TextBox box = new TextBox();
box.Text = DateTime.Now.ToShortDateString ();
box.Width =100;
this.Controls.Add(box); Button btn=new Button ();
btn.Text ="...";
this.Controls .Add (btn);
btn.Click += new EventHandler(this.ButtonClicked); Calendar cal=new Calendar();
cal.SelectedDate =DateTime.Now;
cal.Visible =false;
this.Controls .Add (cal);
cal.SelectionChanged += new System.EventHandler(this.CalSelectionChanged); }
#region Properties
public string Value 
{
get 
{
this.EnsureChildControls();
return ((TextBox)Controls[0]).Text;
}
set 
{
this.EnsureChildControls();
((TextBox)Controls[0]).Text = value;
}
}
#endregion
#region control methods
private  void ButtonClicked(object sender, System.EventArgs e)
{
((Calendar)Controls[2]).Visible=true;

}
private void CalSelectionChanged(object sender, System.EventArgs e)
{
            ((TextBox)Controls[0]).Text=((Calendar)Controls[2]).SelectedDate.ToShortDateString ();
            ((Calendar)Controls[2]).Visible =false;
}
#endregion
}
}

解决方案 »

  1.   

    不用做什么组件啦
    可以单据把日期控件放在一个网页中,然后把这个网页作为包含在div中iframe放在日期编辑框得下面,点击日期编辑框,就显示div层,选择日期,
    用javascript脚本把值给取回。简简单单,做组件觉得小题大做。
    我现在就是这样用,根本没有任何副作用,所以根本也不会有只是控件在显示的时候会导致表格大小的改变得问题了
      

  2.   

    不用做什么组件啦
    可以单据把日期控件放在一个网页中,然后把这个网页作为包含在div中iframe放在日期编辑框得下面,点击日期编辑框,就显示div层,选择日期,
    用javascript脚本把值给取回。简简单单,做组件觉得小题大做。
    我现在就是这样用,根本没有任何副作用,所以根本也不会有只是控件在显示的时候会导致表格大小的改变得问题了