原创控件代码共享--日期选择控件+同时祝贺爱人生日+来者有分

jsyhello 2005-08-18 08:25:52
思路:实现日期年月日的选择
1、可以设定年的起止年份
2、排除不正确日期选择的可能
3、使用javascript实现控制
4、使用Text属性方便获取设置日期值
=================================
代码如下:
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.IO;
using System.Text;
using System.Web.UI;
using System.Web.UI.Design.WebControls;
using System.Web.UI.WebControls;

namespace JSY
{
/// <summary>
/// AspNetDate 选择输入日期控件
/// </summary>
[DefaultProperty("Text"),
ParseChildren(false),
PersistChildren(false),
Description("专用于ASP.Net Web应用程序的日期控件"),
Designer(typeof(DateDesigner)),
ToolboxData("<{0}:JSYNetDate runat=server></{0}:JSYNetDate>")]
public class JSYNetDate:Panel,INamingContainer,IPostBackDataHandler
{
#region 属性
/// <summary>
/// 获取/设置日期值。
/// </summary>
[Bindable(true),
Browsable(true),
Description("日期值"),
Category("外观"),
DefaultValue("")]
public string Text
{
get
{
if (ViewState["Text"] != null)
{
return ViewState["Text"].ToString();
}
else
{
if (IsNull)
{
return "";
}
else
{
DateTime date=System.DateTime.Today;
string str="";
switch (DateFormat)
{
case "YMD":
str=date.ToString("yyyy-MM-dd",System.Globalization.DateTimeFormatInfo.InvariantInfo);
break;
case "YM":
str=date.ToString("yyyy-MM",System.Globalization.DateTimeFormatInfo.InvariantInfo);
break;
case "Y":
str=date.Year.ToString();
break;
}
return str;
}
}
}

set
{
if (value=="")
{
ViewState["Text"] = "";
}
else if (DateFormat=="YMD")
{
DateTime date;
try
{
date=Convert.ToDateTime(value);
}
catch
{
date=System.DateTime.Today;
}
string str = date.ToString("yyyy-MM-dd",System.Globalization.DateTimeFormatInfo.InvariantInfo);
if (str=="1900-01-01")
str="";
ViewState["Text"] =str;
}
else
{
ViewState["Text"] = value;
}
}
}
/// <summary>
/// 获取/设置日期值是否允许空。
/// </summary>
[Browsable(true),
Description("日期值是否允许空"),
Category("布局"),
DefaultValue(false)]
public bool IsNull
{
get
{
return (ViewState["IsNull"]==null)?false:true;
}
set
{
if (value)
ViewState["IsNull"]=true;
}
}
/// <summary>
/// 获取/设置日期值格式(YMD:年-月-日 YM:年-月 Y:年)。
/// </summary>
[Browsable(true),
Description("日期值格式(YMD:年-月-日 YM:年-月 Y:年)"),
Category("布局"),
DefaultValue("YMD")]
public string DateFormat
{
get
{
return (ViewState["DateFormat"]==null)?"YMD":(string)ViewState["DateFormat"];
}

set
{
ViewState["DateFormat"]=value;
}
}
/// <summary>
/// 获取/设置日期值能否编辑。
/// </summary>
[Browsable(true),
Description("能否编辑"),
Category("行为"),
DefaultValue(true)]
public override bool Enabled
{
get
{
return (ViewState["Enabled"]==null)?true:false;
}

set
{
if (!value)
ViewState["Enabled"]=false;
}
}
/// <summary>
/// 获取/设置日期值中可供选择的年份长度。
/// </summary>
[Browsable(true),
Description("日期值中可供选择的年份长度"),
Category("布局"),
DefaultValue(100)]
public int Length
{
get
{
object obj=ViewState["Length"];
return (obj==null)?100:(int)obj;
}

set
{
ViewState["Length"]=value;
}
}
/// <summary>
/// 获取/设置选择年份的结束值。
/// </summary>
[Browsable(true),
Description("日期值中选择结束年份,当小于100时表示距今年数"),
Category("布局"),
DefaultValue(0)]
public int End
{
get
{
object obj=ViewState["End"];
int y;
if (obj==null)
{
y=System.DateTime.Today.Year;
}
else
{
y=(int)obj;
if (y<100)
{
y=System.DateTime.Today.Year+y;
}
}
return y;
}

set
{
ViewState["End"]=value;
}
}
/// <summary>
/// 获取选择年份的开始值。
/// </summary>
[Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int Start
{
get{return End-Length;}
}

#endregion

...全文
933 83 打赏 收藏 转发到动态 举报
写回复
用AI写文章
83 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqxhome 2006-03-15
  • 打赏
  • 举报
回复
mark

==================
我的BLOG:HTTP://ggdesign.meizu.net
希望大家多多指教。
==================
jack1026 2005-08-21
  • 打赏
  • 举报
回复
原创的东西我支持一下,谢谢了。
sandsboy 2005-08-21
  • 打赏
  • 举报
回复
up
jsyhello 2005-08-21
  • 打赏
  • 举报
回复
谢谢,大家捧场,我会继续努力的
canghaiyisujsg 2005-08-21
  • 打赏
  • 举报
回复
来晚了,不过祝福你们!!也谢谢你的代码!!
zeusvenus 2005-08-21
  • 打赏
  • 举报
回复
HAPPY BIRTHDAY!
我也做过个ASP.NET日期选择控件,楼主可以交流下,
http:\\www.cnblogs.com\zeus
免费提供源代码下载。
zhouboss 2005-08-21
  • 打赏
  • 举报
回复
up
onlytry 2005-08-21
  • 打赏
  • 举报
回复
up
changzhu495 2005-08-21
  • 打赏
  • 举报
回复
up
adandelion 2005-08-19
  • 打赏
  • 举报
回复
谢谢楼主
楼主是好人
tjdlut 2005-08-19
  • 打赏
  • 举报
回复
祝贺
shilang999 2005-08-19
  • 打赏
  • 举报
回复
up
codeangel 2005-08-19
  • 打赏
  • 举报
回复
好样的,多些原创
sugengnn 2005-08-19
  • 打赏
  • 举报
回复
UP
幻影时空 2005-08-19
  • 打赏
  • 举报
回复
哇好样的:)

同时也祝生日快乐!(好像是昨天生日的吧?)
frank144 2005-08-19
  • 打赏
  • 举报
回复
祝你们天长地久
phanrider 2005-08-19
  • 打赏
  • 举报
回复
-_-
huisz 2005-08-19
  • 打赏
  • 举报
回复
mark~!恭喜~~~!
sy_609 2005-08-19
  • 打赏
  • 举报
回复
祝贺!!!顶!!!
lqhwyh 2005-08-19
  • 打赏
  • 举报
回复
生日 快樂
加载更多回复(63)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧