C# Calendar控件使用

     最近几天从Java转战到C#,在做一个C#.NET的网站。C#是我的第二编程语言,但是远没有Java熟练。昨天晚上和今天晚上都在控件Calendar上面纠结。有一张查询页面,用户需要输入或选择一些关键信息进行查询。其中,就需要输入起始日期,也就是要在空间Calendar上选择时间。

 

     刚开始还认为,微软做的就是人性化,这么发杂的一个控件只需要在页面上加一行代码就可以了,一阵窃喜。但是事情总不会这么顺利和简单。先是使用控件获取的时间,拼接出的SQL语句会出问题。报的错是char转化为datetime超过datetime的界限。于是网上搜了搜,试了好几种方法,都没有用。今天下午问了一个同学,他也遇到相同问题。他说是因为Calendar控件默认的SelectedDate时间是0001年1月1日,需要在Page_load方法中,用当前的时间对两个控件的Selectdate值进行初始化。试了试,问题解决了。

 

     然后新的问题由来了。页面上两个Calendar显示的确实是当前的日期。选择开始日期后,页面刷新一次,开始日期为选择的日期。然后再选择结束日期,页面刷新,结束日期是选择的日期,但是开始日期又变成了默认的当前日期。也就说,两个Calendar只能同时改变一个的值。原因就是,每选择一次日期,页面就刷新一次,就会执行一次Page_load方法。所以Calendar的值就会变成默认的值。因而无法同时改变两个Calendar的值。

 

     这种现象和设置autopostback的现象很像。于是在Calendar中寻找类似的属性。找过没有。网上查了查,说Calendar选择日期后,页面就会刷新的,没有直接的解决方法。有人建议不要用微软的控件,使用JavaScript编写的Calendar。可我不想。于是继续查,在msdn上,有一种方法,应该可以解决。设置一个updatePanel,把Calendar放进去,只更新这个panel。是与Ajax相关的技术,而且好像在vs2008中才有,我的web developer2005更本没有。于是放弃这种方法。

 

     本来想问问那个同学的,他要做的页面和我功能类似,但是还是忍住了。于是继续冥思苦想。反复研究Calendar组件的属性和事件,最后灵光一闪,想到了解决方法。将SelectedDate的赋值语句,放到Init事件里。这样刷新页面,就不会恢复Calendar的默认值了。一切解决了,虽然不是很优雅的方法。可是还算实现功能了。

https://p-blog.csdn.net/images/p_blog_csdn_net/kite1988/EntryImages/20090517/1.html.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值