博客园控件开发团队成立以来第一个控件发布+源码公开!!!

DateChooser控件发布。(已更新版本)

这个可算是控件开发团队诞生以来的第一个作品,只能算是抛砖引玉。

DateChooser、DatePicker之类的控件很多,我开发这个控件绝不是重复别人,也不是做无谓的劳动。
DateChooser有以下特点:
1、用户可以方便的点选输入框中的日期的年、月、日中的一个部分,分别进行增减,点击一次增减按钮,相应部分的增减量是1,但如果用户按住按钮不放,将会以一个加速度来持续增减日期(当然,为了便于控件,最快是0.1秒加减1。)。
2、如果用户输入不能识别为日期内容或范围不在设定的最大值、最小值之间,输入框会显示为错误颜色,并且用户输入焦点离开输入框时,输入框中的值会自动还原为上次正确值。

3、开发者可以通过BorderColor、LightColor、MedColor、DarkColor四个主要颜色的设置方便快捷的更改控件的界面风格,再适当调整其它的颜色设置,可以生成各种风格的界面,适应各种场合。

4、开发者可以通过“显示/隐藏拉日期框”切换是否显示日期选择面板。比如在设计DateChooser界面时,可以打开面板,即时的看到效果,设置后可以关闭面板,使设计时和生成后的界面一致。

5、开发者可以通过设置TransitionType和Duration为日期选择面板打开时选择变纪效果,22种效果还可以通过打开的图例方便的辨认,不用效果时,TransitionType设为None即可。注意Duration最好不要大于0.5。

6、开发者可以通过设置Culture使生成的面板中的文字为中文抑或英文。
7、此版本只提供两种分格符“-”和“/”,可通过DateFormatSeparator进行选择。
8、可通过ShowButton开关后面的增减按钮。
9、可设置MinDate和MaxDate限定日期选择的范围。
10、日期相关属性都为String类型,都可以清空,不过通过Editor进行编辑时不支持早于1753年的日期,如要早于此时间,开发者可以直接输入。还有AllowNull为False时,不要让SelectedDate为空。
11、设置Container为None则用层来显示日期面板,Frame则使用IFrame,如果控件周围有下接列表,则最好使用Frame,因为我们知道下接列表会显示在层的上面,从而坏破了日期面板的美观和完整性。(如果有时间做下版本的话,会支持穿透力更强的PopUp窗口)。
12、支持AutoPostBack(在日期值改变时)和DateChanged事件。

        private void InitializeComponent()
        
{    
            
this.DateChooser1.DateChanged += new System.EventHandler(this.DateChooser1_DateChanged);
            
this.Load += new System.EventHandler(this.Page_Load);

        }

    

        
private void DateChooser1_DateChanged(object sender, System.EventArgs e)
        
{
            Response.Write(
"<script>alert('"+this.DateChooser1.SelectedDate+"');</script>");
        }


13、其它设置请查看提示。
14、控件基于HTC行为技术,要求IE5以上版本,控件会自动检查客户端,低于要求则只会简单的生成一个TextBox(EnableClientScript设为False也会如此)。(其实使用HTC开发并没有得到什么便利,只是当初想一次把PopUp也做了,反正要IE5以上,所以使用了HTC)
15、Dll文件本想安装成GAC,不过为了方便用户的各种使用,最后改成安装在桌面,请自行拷贝到合适目录,并手动添加到工具箱。  

[旧版本(有charset问题)下载地址:http://gmail.google.com/gmail?view=att&disp=attd&attid=0.1&th=10459f844a20e92f
如不能下可用第二个地址:
http://downloads.cnblogs.com/thin/datechooser.rar ]


最新版下载:http://downloads.cnblogs.com/thin/releasev1.rar
(更正要设charset的问题,更正TransitionType设为None不起作用问题)
代码查看:http://www.cnblogs.com/thinhunan/category/27679.html

 

posted @ 2005-06-08 11:12 Lyn 阅读(14653) 评论(88)  编辑 收藏 所属分类: ASP.net server components and controlsDateChooser

  回复  引用    
#1楼 2005-06-08 11:23 | ? [未注册用户]
在哪下载?
  回复  引用  查看    
#2楼 [楼主]2005-06-08 11:33 | THIN      
不好意思,下载刚搞掂,博客园不能上载下载文件了,我弄GMail上了,不知会不会被那位老兄把我邮箱黑了不?
  回复  引用  查看    
#3楼 2005-06-08 11:58 | ttyp      
对htc过敏最好还是用js,另外像日期控件很多,但是带时间的很少
  回复  引用  查看    
#4楼 2005-06-08 12:01 | dudu      
辛苦了!
我会考虑在博客园的程序中使用。
请与我联系, 你帮你开通FTP空间。


  回复  引用  查看    
#5楼 [楼主]2005-06-08 12:10 | THIN      
@DUDU:
谢谢。
@ttyp:
另外像日期控件很多----很多时候我们都是在做别人做过的事,只是我们要做得更好!
但是带时间的很少----我考虑过这个,不过时间做在日期里有点不伦不类,可以考虑以后做个时间选择器。
htc是有不很爽,不过我靠MS的东西糊口,就当是支持一下MS吧。
  回复  引用    
#6楼 2005-06-08 12:23 | mancini [未注册用户]
强烈要求带时间选择,呵呵
  回复  引用  查看    
#7楼 2005-06-08 12:24 | sjcatsoft      
Right now, Windows Server 2003 with SP1 does not support HTC.

Pls show me the feedback of test on Win2003&SP1, thx.
  回复  引用  查看    
#8楼 [楼主]2005-06-08 12:30 | THIN      
@sjcatsoft:
真如你所说,也就不要Test了。
只能Fuck MS了。
  回复  引用    
#9楼 2005-06-08 12:42 | soft_biao [未注册用户]
老大,下载不了啊~~
还有那些源代码能不能打包让我们下载啊~~
  回复  引用  查看    
#10楼 2005-06-08 12:54 | birdshome      
都啥乱七八糟的啊,htc是IE支持的,关windows啥事啊?

// 关于开发已有的东西,只要有自己的亮点,绝对是大力支持!:)
  回复  引用  查看    
#11楼 2005-06-08 13:05 | Lostinet      
我也开发过日期控件.
不过我发现用户更习惯键盘的输入,只有在某些场合下拉才起作用.
所以支持双击全选和快速输入也是关键.
例如自动辨别这些日期:
0608 ENTER
050608 ENTER
20050608 ENTER
另外,判别游标的位置,按UP/DOWN时针对年,月,日来进行增减也是好事.

  回复  引用    
#12楼 2005-06-08 13:11 | mywebcom [未注册用户]
nullvalue
defaultvalue
this.DateChooser1.Value(当超过日期范围怎么处理,可以很好的放在dataGrid中么,另外验证方面麻烦不)
this.DateChooser1.Text = String.Empty(清空)

上述几个方面都可以设置介绍都不多阿
  回复  引用  查看    
#13楼 [楼主]2005-06-08 13:24 | THIN      
@Lostinet:
本来都做了一部分快捷键按钮代码了,后来怕和用户自己的代码冲突,就干掉了。
@mywebcom:
不能用Value和Text,请使用SelectedDate,这个属性是String类型,可以=string.Empty;超过日期范围下拉框所有按钮不能选,选择任何按钮会自动更正为正确日期。
@soft_biao:
为什么会下载不了呢?我试了可以下载的啊。
源代码不打包,根据我的经验一次能下到的东西一般不会去看。:)
  回复  引用  查看    
#14楼 [楼主]2005-06-08 13:29 | THIN      
真提醒一次,请认真查看以上的说明,很多问题上面的文字可以解释。

关于用HTC,我想微软自己也有TreeView等控件用的是HTC,如果它改用新的版本,我也会出新版本。

不过下一版本,我可能会放弃HTC技术吧。
  回复  引用  查看    
#15楼 2005-06-08 13:33 | cloud      
就是不能下载!
  回复  引用  查看    
#16楼 2005-06-08 13:47 | myzerg      
支持netscape7 和 firefox么
这很重要哦
  回复  引用  查看    
#17楼 2005-06-08 13:48 | 二十四画生      
强!比我做的强多了,非常想看看你是如何处理style这个属性的。能不能将代码打包发到我的邮箱,最好能带演示程序。esshs@tom.com
我做的日历控件:http://www.cnblogs.com/esshs/archive/2005/03/29/127691.aspx
  回复  引用  查看    
#18楼 2005-06-08 13:56 | 柚子Nan      
不错,支持一下!
以前尝试做过,项目太忙就放弃了
  回复  引用    
#19楼 2005-06-08 13:57 | isaac [未注册用户]
请问,现在正儿八经的搞开发用的VS.NET都是什么版本的?
那些测试版或者体验版能用来作产品么?
  回复  引用  查看    
#20楼 [楼主]2005-06-08 14:05 | THIN      
dudu快点开通FTP,呵呵,我这能下载,怎么?。。。。。

@myzerg:
FireFOx意味着,最好少用JS。。。。

我公司用2002,我用2003

  回复  引用  查看    
#21楼 2005-06-08 14:30 | dudu      
FTP已经开通, 请查收你的邮件。
  回复  引用    
#22楼 2005-06-08 15:04 | chinacs [未注册用户]
请问下载可以下载了没有
  回复  引用  查看    
#23楼 [楼主]2005-06-08 15:08 | THIN      
现在有两个下载地址,反正有一个能下到。
  回复  引用  查看    
#24楼 2005-06-08 15:19 | wssmax      
恭喜!
  回复  引用    
#25楼 2005-06-08 16:31 | neuhawk [未注册用户]
很不错了,我现在还是用梅花雨那个。
我很希望加上时间,还有就是键盘操作。
其实更多的用户希望键盘操作,偶加上键盘输入框后,用户几乎懒得选择了,毕竟他们更喜欢键盘。
  回复  引用  查看    
#26楼 [楼主]2005-06-08 16:58 | THIN      
这样的话,我会把四个方向键加上去,左右选日期的各个部分,上下增减。
  回复  引用  查看    
#27楼 2005-06-08 18:25 | format      
你好,我可以为博客园的开源项目提供免费的asp.net主页空间,请于我联系formatkm@hotmail.com
  回复  引用    
#28楼 2005-06-08 21:01 | barton131420 [未注册用户]
支持Lostinet的说法,应该支持键盘快速输入。反对在日期控件上加时间。真的是有点职责不清了。
  回复  引用  查看    
#29楼 2005-06-08 21:18 | kly      
晕,怎么一安装什么都找不到了,wwwroot和program files目录都没有,默认是安装在哪个目录啊
  回复  引用    
#30楼 2005-06-08 22:01 | zhangwei [未注册用户]
为什么没有ASP的啊~~~~~.net我还不会啊~
  回复  引用  查看    
#31楼 2005-06-08 22:01 | ttyp      
键盘操作应该作为一个可选的属性

  回复  引用    
#32楼 2005-06-08 22:32 | 路人甲 [未注册用户]
呵呵不错
不过还是 觉得 梅花雨 老大 那个厉害
  回复  引用    
#33楼 2005-06-08 23:11 | dashayu [未注册用户]
出错啊
提示脚本出错!!
  回复  引用  查看    
#34楼 [楼主]2005-06-09 08:55 | THIN      
请认真查看说明,OK?那些嚷嚷出错的同志!
相对于梅花雨,这个只是少了一个功能,就是点击年或月时才把年或月转成下拉框,因为开发时间有点长,所以没做那个功能。而比梅花雨多的功能很多,效率不比梅花雨差。
---呵呵,我干嘛和梅花雨比上了,都不是一个层次的,一个是JS脚本,一个是Asp.net服务器控件,不过我还是希望大家用过了之后再说,OK!
关于源代码,我已经进行了说明,博客园不能上传打包文件!
  回复  引用  查看    
#35楼 [楼主]2005-06-09 08:56 | THIN      
安装后,Dll文件在你的桌面,这是你最方便找的地方了,我已说明,干嘛去Program files,哎习惯使然。
  回复  引用    
#36楼 2005-06-09 09:07 | 寒枫天伤 [未注册用户]
建议为该控件加入农历功能,并提供阳历节日与阴历节气
  回复  引用    
#37楼 2005-06-09 09:36 | qingyun1020 [未注册用户]
支持开源!
  回复  引用  查看    
#38楼 2005-06-09 09:51 | BlackCode      
最好有个源代码打包下载!
  回复  引用    
#39楼 2005-06-09 09:52 | 白菜 [未注册用户]
我是来提问题和意见的!!

我想把控件设置成普通的TEXTBOX的样式,然后焦点到控件时自动弹出日历选择框~而且不要那些花哨的,要一下子弹出来,速度要够快,该怎么设置?TransitionType设为None居然没用??
  回复  引用  查看    
#40楼 2005-06-09 10:18 | Arping.Net探索      
以前也写过日期控件,还是楼长写得炫,不过编码能不能改为unicode的,这个跟现在项目正用的NetAdvantage控件冲突,NA在gb2312下显示为乱码。
  回复  引用  查看    
#41楼 [楼主]2005-06-09 10:22 | THIN      
@白菜:
1.不提供,最多把那个后面两个按钮关了,前面的按钮不能关。
2.有这样的问题?看来要查Bug,不过现在你把Duration设为0应该是可以的了。
@Arping.Net探索:
我会尽快解决这个编码限制的。请关注!
  回复  引用    
#42楼 2005-06-09 10:40 | 白菜 [未注册用户]
又出现好几个问题

1.总是不能把这个控件和左边的文字放在同一行,它老要换行!

2.右键刷新页面后,控件左侧的下拉箭头会消失,怎么回事?
  回复  引用    
#43楼 2005-06-09 10:46 | 白菜 [未注册用户]
我又来了,因为我正在用楼主的控件,所以意见比较多哦

1.Duration设为0确实是可以了,多谢作者!

2.新的问题,当我把日期写成2006-22-09这种形式时,字的颜色并不发生变化
  回复  引用  查看    
#44楼 2005-06-09 15:53 | davidjgu      
按递增或递减按钮时,控件内的数值是出现了递增或递减;
但如果此时按住鼠标不动移至其他区域,则仍然递增或递减!
此时焦点已不在控件上了,但一点击其他其他文本框
可参考windows的日期时间属性对话框做修改!
  回复  引用  查看    
#45楼 [楼主]2005-06-09 16:02 | THIN      
这个是我预留的一个功能,就是用户可以按信鼠标移出增减按钮,让它自己去变而不要一直按着,停止时再点一下那个按钮就可以了。
  回复  引用    
#46楼 2005-07-22 17:00 | 江大鱼 [未注册用户]
不错不错,界面美观,操作方便,非常成功。就是生成的客户端代码太复杂,有2个相互嵌套的table,也只能这样了
  回复  引用    
#47楼 2005-07-24 06:54 | 郁闷 [未注册用户]
竟然不支持popup,我找的好苦!!
  回复  引用    
#48楼 2005-09-02 10:58 | jj [未注册用户]
1312 onevent='htc()' 提示找不到对象,为甚么呀?
  回复  引用  查看    
#49楼 [楼主]2005-09-02 11:10 | THIN      
建议重装一下控件
再查看一下,控件的HTC文件的路径是不是正确
  回复  引用    
#50楼 2005-09-07 14:42 | 浪子 [未注册用户]
有一个问题你们没有解决。就是验证控件对它验证不了。:<.这个就太不对了吧。

  回复  引用  查看    
#51楼 [楼主]2005-09-07 15:02 | THIN      
它本身就能自动修改错误的输入,还能限定日期范围,还有那个必要吗?
  回复  引用    
#52楼 2005-09-07 16:16 | 浪子 [未注册用户]
有必要。验证控件中的Compare验证控件中的type属性有Date这个值。
你不让两个控件比较,不是把这个功能给你家拿掉了吗。
  回复  引用  查看    
#53楼 2005-09-15 17:30 | coolstr[占卜師]      
用了你的日期控件后,怎么不可以用RequiredFieldValidator验证它的有效性?

  回复  引用  查看    
#54楼 [楼主]2005-09-15 18:22 | THIN      
下次再把这个做上去吧

  回复  引用  查看    
#55楼 2005-09-20 11:13 | coolstr[占卜師oοΟ]      
默认年份的显示数量上有没有地方可以设置的啊?
我比如我要选择出生日期,就要从1990 至 2000,一起显示出来行吗?
  回复  引用    
#56楼 2005-10-06 11:41 | yingcongxiao [未注册用户]
这个控件很好用。但本人迟钝,有两个问题搞不明白。

一。如果验证为空。在其属性中我设不不可为空,但不行。用验证控件,未果。

二。不可以设置它的宽。

如果解决?有劳兄弟你帮帮忙。yingcongxiao@hotmail.com
  回复  引用  查看    
#57楼 [楼主]2005-10-08 09:22 | THIN      
不能为空,在你没有设默认值的情况下,会自动使用当前时间
不支持设置空度,会使其外型变型。
  回复  引用    
#58楼 2005-11-14 09:38 | 感谢 [未注册用户]
感谢
  回复  引用    
#59楼 2005-11-19 11:27 | Thin fans [未注册用户]
我用了一下这个控件 但是听说发布版本需要安装 直接拷贝dll文件不能使用,而且需要有图片资源拷贝到指定目录,不知道新版本的是否还这么麻烦。能否把图片资源等嵌入到dll文件?
另外在设计时不能控制其size,能否改善一下 hehe
  回复  引用  查看    
#60楼 [楼主]2005-11-19 12:03 | THIN      
@Thin fans:
首先,直接拷DLL是可以用的,不过这样的话,控件会找不到所要引用的DateChooser.htc文件和相关的几个图片,造成控件不能使用,如果你要直接拷DLL的话,要把要相的HTC文件和图片拷贝到相应的目录。
另外设计时控件其Size是没有意义的,原因是这样的话,控件生成后会不美观。
把图片资源嵌入DLL文件的话可是一个好主意,在每次使用时,把资源文件生成到项目目录自动引用,不过我现在没有时间再关注这个小控件,如果有兴趣,你可以反汇编它再修改它的代码,它的DLL代码并不复杂,只是HTC有点复杂而已
  回复  引用  查看    
#61楼 2005-11-27 21:13 | jianjunli      
我有一个简单的问题,就是在客户端如何取得选择的日期??
上面这么多人问问题居然没有人问题,期待答案,急!!
  回复  引用  查看    
#62楼 [楼主]2005-11-28 09:40 | THIN      
@jianjunli
用DateChooserDOMID.Value就能得到选择的结果,不过这个DateChooserDOMID是客户端的ID就是说,你如果把控件放在DataGrid等控件中,那么控件在服务器端的ID和客户端的ID会不一致,另外,是Value不是value。
如果这个属性不能取得结果,请查看一下控件的JS代码,这个太久没有维护了,有点记不清了,实在不好意思,估计很少人会像我做个东西出来后就不管它了,呵呵,太忙了。
  回复  引用    
#63楼 2006-02-07 16:24 | spyer [未注册用户]
我是在UC控件中使用它的,一般情况下使用比较正常,但是在多进行几次页面切换的情况下,会报脚本错误。microsoft JScript 运行时错误:'cells'为空或不是对象。跟踪到htc文件中。270行:btnreduce = element.rows[0].cells[2].getElementsByTagName("TABLE")[0].rows[1].cells[0].getElementsByTagName("IMG")[0];

不知道什么原因。
  回复  引用    
#64楼 2006-02-21 22:52 | Sunron [未注册用户]
不能进行中英文显示方式,我改来改去都是E文的!
另外,花哨太多了
  回复  引用    
#65楼 2006-02-28 15:07 | AlexHe.cs [未注册用户]
可以改啊,我用的VS2005,只是我想把资源文件改为内嵌的,图片都可以,只是HTC脚本搞不定,请大大指教
  回复  引用  查看    
#66楼 [楼主]2006-02-28 15:12 | THIN      
@AlexHe.cs
你可以在我的基础上进行开发,并发布,HTC上的问题,你可以写下来要从原来怎么改到怎么样,我有空可以弄一下
  回复  引用    
#67楼 2006-02-28 17:22 | AlexHe.cs [未注册用户]
谢谢THIN的关注,我现在的级别不够,谈不上大的改动,只是我自己比较懒,不想每次都指定资源目录,所以想把这些资源全部改成内部资源,我已经搞好了,HTC的MIME-TYPE是text/x-component,然后在给SelectedDate加上了默认值而已
  回复  引用    
#68楼 2006-02-28 17:32 | AlexHe.cs [未注册用户]
对拉,THIN老大有没有漂亮点的COMBOBOX控件啊,自带的为什么我不能改样式啊
  回复  引用  查看    
#69楼 [楼主]2006-02-28 17:40 | THIN      
To AlexHe:
呵呵,积跬步以至千里,只要是改进就是好的,不介意就发布出来嘛
ComboBox倒是没有做过,以后工作轻松点后看能不能组织团队做些东西出来……
  回复  引用    
#70楼 2006-05-16 15:52 | sky0225 [未注册用户]
一般情况下使用比较正常,但是在多进行几次页面切换的情况下,会报脚本错误。microsoft JScript 运行时错误:'cells'为空或不是对象。跟踪到htc文件中。
269行:btnadd = element.rows[0].cells[2].getElementsByTagName("TABLE")[0].rows[0].cells[0].getElementsByTagName("IMG")[0];
428行:btnadd.parentElement.style.backgroundColor = btnreduce.parentElement.style.backgroundColor = btndropdown.parentElement.style.backgroundColor = tabledays.rows[0].style.backgroundColor = midcolor;
不知该如何改正,希望THIN指点一下啊


  回复  引用    
#71楼 2006-05-25 22:51 | jjf [未注册用户]
请问Thin 如何把yyyy-MM-dd(2006/05/09) 显示为 dd-MM-YYYY(09/05/2006)?

  回复  引用    
#72楼 2006-08-18 14:53 | 星期零_1 [未注册用户]
dotnet2.0下就不可以用了?
  回复  引用    
#73楼 2006-10-13 11:25 | 闪电侠 [未注册用户]
有没有带有时间的日期控件啊?
  回复  引用    
#74楼 2006-10-24 22:29 | oldhen [未注册用户]
请问我在vs2005使用这个控件时文本框左右三个图片都显示不出来是怎么回事啊?
  回复  引用    
#75楼 2006-11-19 23:29 | cyw [未注册用户]
为什么在显示的时候总是显示英文的啊!找了半天也没有找到应该怎么改成中文的,还有就是在显示年月日中进行拖拽会生成一个新的年月日,我觉得这点不是很好可以,请指教如何修改!(本人对Js,C#都并不太会),谢谢!急!
  回复  引用    
#76楼 2006-11-19 23:31 | cyw [未注册用户]
为什么在显示的时候总是显示英文的啊!找了半天也没有找到应该怎么改成中文的,还有就是在显示年月日中进行拖拽会生成一个新的年月日,我觉得这点不是很好可以,请指教如何修改!(本人对Js,C#都并不太会),谢谢!急!我的邮箱地址是balrwwfn@126.com
  回复  引用  查看    
#77楼 2007-03-23 23:10 | 萍踪侠影      
可是不支持验证控件啊????
  回复  引用    
#78楼 2007-04-29 13:38 | 123 [未注册用户]
请问我在vs2005使用这个控件时文本框左右三个图片都显示不出来是怎么回事啊?
  回复  引用    
#79楼 2007-05-02 15:32 | viki [未注册用户]
我有怎么一个需求..我需要做一个行事历的项目..
日历需要根据当月每天的事件情况给予不同的颜色..
不知道这个控件是否可以实现..如何实现??
  回复  引用  查看    
#80楼 [楼主]2007-05-02 16:31 | THIN      
@viki
ComponentOne.Studio.for.ASP.NET.2007.v1.for.DotNET.Framework.v2.0这套控件中有
  回复  引用    
#81楼 2007-05-05 16:08 | viki [未注册用户]
有没有使用于vs2003Winform下的日历控件啊...
  回复  引用    
#82楼 2007-08-30 11:50 | '' [未注册用户]