ASP.NET常用控件之1:用于选择日期的TextBox控件

转载 2006年06月09日 17:38:00
将日常使用的日期选择用户控件进行了封装,是我写的第一个服务器控件,希望大家给些意见。
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Sdtcn.WebControls
{
    [
    Designer(
typeof(Design.CompositeControlDesigner)) 
    ]
    
public abstract class CompositeControl : 
        WebControl, INamingContainer 
    
{
        
public override ControlCollection Controls 
        
{
            
get 
            
{
                EnsureChildControls();
                
return base.Controls;
            }

        }

    }

}

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

namespace Sdtcn.WebControls
{
    
/**//// <summary>
    
/// CustomCalendar 的摘要说明。
    
/// </summary>

    public class CustomCalendar : CompositeControl
    
{
        
private TextBox            _calendarTextBox;
        
private HtmlInputButton _selectInputButton;
        
private Calendar        _calendar;

        
private static readonly object EventSelectChanged = new object();

        
private string display
        
{
            
get
            
{
                
if(ViewState["Display"== null)
                    
return "none";
                
else
                    
return ViewState["Display"].ToString();
            }

            
set
            
{
                ViewState[
"Display"= value;
            }

        }


        代理子控件的属性
代理子控件的属性

        事件
事件

        
        
private void _calendar_SelectionChanged(object sender, EventArgs e) 
        
{
            _calendarTextBox.Text 
= _calendar.SelectedDate.ToShortDateString();

            System.Web.UI.Control div 
= Page.FindControl("divCalendar");

            
if(div is HtmlGenericControl)
            
{
                ((HtmlGenericControl)div).Style.Add(
"display","none");
            }


            OnSelectChanged(sender,e);

            display 
= "none";
        }


        
private void _calendar_VisibleMonthChanged(Object sender, MonthChangedEventArgs e)
        
{
            display 
= "block";
        }


        
public CustomCalendar()
        
{}

        
protected override void CreateChildControls()
        
{
            Controls.Clear();

            _calendarTextBox 
= new TextBox();
            _calendarTextBox.ID 
= "calendarTextBox";
            _calendarTextBox.ReadOnly 
= true;

            _selectInputButton 
= new HtmlInputButton("button");
            _selectInputButton.Attributes.Add(
"Onclick","OnClick()");
            
            _calendar 
= new Calendar();
            _calendar.SelectionChanged 
+= new EventHandler(_calendar_SelectionChanged);
            _calendar.VisibleMonthChanged 
+= new MonthChangedEventHandler(_calendar_VisibleMonthChanged);

            
this.Controls.Add(_calendarTextBox);
            
this.Controls.Add(_selectInputButton);
            
this.Controls.Add(_calendar);
        }


        
protected override void OnPreRender(EventArgs e)
        
{
            
base.OnPreRender (e);

            
string script = "<script language=JavaScript> function OnClick(){  if( divCalendar.style.display == /"none/")    divCalendar.style.display = /"/";  else    divCalendar.style.display = /"none/";}</script>";
            Page.RegisterClientScriptBlock(
"script",script);
        }


        
protected override void Render(System.Web.UI.HtmlTextWriter writer)
        
{
            AddAttributesToRender(writer);

            _calendarTextBox.RenderControl(writer);
            _selectInputButton.RenderControl(writer);
            
            writer.Write(
"<br>");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);
            writer.AddAttribute(HtmlTextWriterAttribute.Id,
"divCalendar");
            writer.AddAttribute(HtmlTextWriterAttribute.Style,
"DISPLAY:" + display + ";POSITION:absolute");
            _calendar.RenderControl(writer);
            writer.RenderEndTag();
        }


    }

}

asp.net的textbox获取时间控件(javascript)(1)

在ASP.NET前台加上这么两句: 下面的代码写在一个叫WebCalendar.js名字的js脚本里 var cal; var isFocus=false; //是否为焦...

(转)解决Asp.net中文本框控件(TextBox)readonly或disabled时内容无法POST到服

网页中有的时候想让用户无法在文本框控件(TextBox)里输入,常见的方法是把它的ReadOnly属性设为True,或者是将Enabled属性设为False。这两种方法的作用差不多。另外还可以用标签代...

ASP.Net TextBox控件只允许输入数字

1.1、在Asp.Net TextBox 控件的 OnKeyPress 事件中指定输入键盘码必须为数字: =48)&&(event.keyCode     注意:如果不允许输入小数点去掉“...

asp.net 动态创建TextBox控件 如何加载状态信息

接着上文Asp.net TextBox的TextChanged事件你真的清楚吗? 这里我们来说说状态数据时如何加载的。 虽然在Control中有调用状态转存的方法,但是这里有一个判断条件 if (...
  • dz45693
  • dz45693
  • 2012年12月11日 15:46
  • 2515

Asp.net如何验证TextBox控件只输入数字(五种情况分析)转帖

在做Asp.net开发中,为了保证数据的正确性,经常要限制用户输入的内容,本文提供的验证技巧是保证TextBox控件只输入数字,具体情况又细分了五项内容,供大家参考!具体如下: 首先在TextBox...
  • tom1995
  • tom1995
  • 2017年04月12日 20:19
  • 245

asp.net控件与JavaScript实现TextBox获取焦点时出现日历

asp.net控件与JavaScript实现TextBox获取焦点时出现日历 效果:当光标落入TextBox中,其下出现日历.日历是asp.net 的日历控件. (1)aspx中代码: Ja...

ASP.NET动态添加TextBox控件

ASP.NET动态添加TextBox控件

asp.net学习之textbox控件使用的小例子

.apsx代码如下: 输入正确的姓名和密码(123456),解锁控件 姓名: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET常用控件之1:用于选择日期的TextBox控件
举报原因:
原因补充:

(最多只允许输入30个字)