一个基于JS日历的WebControl日历控件(一)

翻译|其它|编辑:郝浩|2005-08-02 14:04:00.000|阅读 2014 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


程序代码如下所示:

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

namespace PeoNormalControl
 {
     //// <summary>
    /// JS类型的DateTimePicker
   /// </summary>

   [
      ParseChildren(false)
   ]
   [
   ToolboxData("<{0}:DateTimePicker runat=server></{0}:DateTimePicker>"),DefaultEvent
   ("DateChanged"),ValidationProperty("DateText"),
   ]
public class DateTimePicker:WebControl,IPostBackDataHandler
{
  public DateTimePicker()
   {
     //
    // TODO: 在此处添加构造函数逻辑
    //

    }
private static object EventDateChangedObject;
//public event EventHandler DateChanged;

#region 数据成员

private Int32 _Hour;
private Int32 _Minute;
private Int32 _Second;

//// <summary>
/// 设置或获取日期框文本。
/// </summary>

[Category("Data"),Description("设置或获取日期框文本。"),DefaultValue("")]
public String DateText
{
   get{
     object objVal = ViewState["DateText"];
     return objVal == null ? String.Empty : objVal.ToString();
    }
   set{
     if (value.Length == 0)
     {
       this.ViewState.SetItemDirty("DateText",false);
       ViewState["DateText"] = String.Empty;
       return;
      }
       ViewState["DateText"] = DateTime.Parse(value).ToString("yyyy-MM-dd");
     }
}
    //// <summary>
   /// 设置或获取小时。
  /// </summary>

[Category("Data"),Description("设置或获取小时。"),DefaultValue(0)]
public Int32 Hour
{
   get{return _Hour;}
   set{
      if (value > 23 || value < 0)
   throw new ArgumentOutOfRangeException("Hour",value,"参数范围溢出,小时的范围应在0-23之间。");
 _Hour = value;
     }
  }
     //// <summary>
    /// 设置或获取分钟。
   /// </summary>

[Category("Data"),Description("设置或获取分钟。"),DefaultValue(0)]
public Int32 Minute
{
   get{return _Minute;}
   set{
     if (value > 59 || value < 0)
    throw new ArgumentOutOfRangeException("Hour",value,"参数范围

    溢出,分钟的范围应在0-59之间。");
    _Minute = value;
      }
  }
     //// <summary>
    /// 设置或获取秒钟。
   /// </summary>

[Category("Data"),Description("设置或获取秒钟。"),DefaultValue(0)]
public Int32 Second
{
   get{return _Second;}
   set{
      if (value > 59 || value < 0)
      throw new ArgumentOutOfRangeException("Hour",value,"参数范围

      溢出,秒的范围应在0-59之间。");
      _Second = value;
     }
}
     //// <summary>
    /// 设置或获取日期和时间。
   /// </summary>

[Category("Data"),Description("设置或获取日期和时间。")]
public DateTime SelectedDateTime
   {
    get{
       return DateText == String.Empty ? DateTime.MinValue : DateTime.Parse

      (DateText).AddHours(Hour).AddMinutes(Minute).AddSeconds(Second);
      }
   set
     {
       if (value == DateTime.MinValue)
     {
        this.DateText = String.Empty;
        this.Hour = 0;
        this.Minute = 0;
        this.Second = 0;
     }
   else
   {
      this.DateText = value.ToString("yyyy-MM-dd");
      this.Hour = value.Hour;
      this.Minute = value.Minute;
      this.Second = value.Second;
    }
  }
}
#endregion

#region 设置属性

     //// <summary>
    /// 日期改变后,是否自动回发服务器。
   /// </summary>

[Category("Behavior"),Description("日期改变后,是否自动回发服务器。"),DefaultValue
(false),Bindable(false)]
public bool AutoPostBack
{
  get{
      object objVal = ViewState["AutoPostBack"];
      return objVal == null ? false : Convert.ToBoolean(objVal);
     }
  set{
      if (value == false)
      {
         this.ViewState.SetItemDirty("AutoPostBack",false);
       }

       ViewState["AutoPostBack"] = value;
     }
 }
//// <summary>
/// 是否允许用户提交空日期。
/// </summary>

[Category("Behavior"),Description("是否允许用户提交空日期。"),DefaultValue(false)]
public bool AllowNull
{
   get{
       object objVal = ViewState["AllowNull"];
       return objVal == null ? false : Convert.ToBoolean(objVal);
      }
   set{
        if (value == false)
         {
            this.ViewState.SetItemDirty("AllowNull",false);
}

  ViewState["AllowNull"] = value;
  }
}
//// <summary>
/// 是否显示时间部分。
/// </summary>

[Category("Behavior"),Description("是否显示时间部分。"),DefaultValue(false)]
public bool ShowTime
{
   get{
        object objVal = ViewState["ShowTime"];
        return objVal == null ? false : Convert.ToBoolean(objVal);
       }
   set{
       if (value == false)
        {
          this.ViewState.SetItemDirty("ShowTime",false);
           }
     ViewState["ShowTime"] = value;
     }
}
//// <summary>
/// 日期为空时,是否自动填充当前日期和时间。
/// </summary>

[Category("Behavior"),Description("日期为空时,是否自动填充当前日期和时

间。"),DefaultValue(false)]
public bool AutoFillNow
{
   get{
       object objVal = ViewState["AutoFillNow"];
       return objVal == null ? false : Convert.ToBoolean(objVal);
      }
   set{
       if (value == false)
       {
         this.ViewState.SetItemDirty("AutoFillNow",false);
         }

     ViewState["AutoFillNow"] = value;
   }
}
//// <summary>
/// 控件所需资源的路径。为空则先在程序目录下的“/js/”、“/calendar/”进行搜索,如果 ///不存在则调用程序集的内嵌资源。建议把所需资源放在以上两个目录中的一个,或放在任意目录中并设定此路径属性。
//// </summary>

[Description("控件所需资源的路径。"),DefaultValue(""),Bindable(false)]
public string ResourcePath
{
  get
   {
    object obj = ViewState["ResourcePath"];
    return (obj == null) ? String.Empty : Util.ResolveClientUrlSimple

   (obj.ToString());
    }
  set
  {
    if (value == String.Empty)
  {
    this.ViewState.SetItemDirty("ResourcePath",false);
  }

    ViewState["ResourcePath"] = value;
   }
}
#endregion

#region 事件
//// <summary>
/// 日期改变事件。
/// </summary>

[Category("Action"),Description("日期改变事件。")]
public event EventHandler DateChanged
{
   add
     {
        base.Events.AddHandler(EventDateChangedObject, value);
     }
   remove
     {
        base.Events.RemoveHandler(EventDateChangedObject, value);
      }
}
private void OnDateChanged(EventArgs e)
{
   EventHandler handler1 = (EventHandler) base.Events[EventDateChangedObject];
   if (handler1 != null)
   {
     Page.Validate();

    handler1(this, e);
  }

}
#endregion

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP