DateTimePicker的一个问题

 

日期控件是做WINFORM时候用得很多的一个控件,它可以帮助我们方便的选择到日期,如果对外观不是要求很高的话那这个控件应该可以满足我们平时大部分的需要。

但是这个控件有一个特点:不管什么时候控件的值不能为空,不像comboBox一样里面可以 没任何的值,这就造成了一个问题:在做插入数据和操作时,如果数据库的值可以为空,也就是说用户不一定选择日期值的时候,由于控件的默认值,会将当前这个日期做为控件的值插入到数据中。这就相当于你为用户添加了一个用户不愿意添加的值,可能你可以说,我的SQL语句不写这个控件的相关字段和值不就OK了吗,但是我又怎么去判断这个值是不是用户所需要的呢?这里,当然不能判断这个值是不是当前这个值了,因为如果用户就是需要当前这个日期呢?所以,很多时候,我们的判断不能找出用户有没有人为的选择这个控件的值,所以需要另外再想一个办法。

这们知道,这个控件有一个属性:showCheckBox,这个属性的作用是在这个日期前面添加一个复选框,这样会让控件看上去有些不习惯,不过它可以帮我们实现这种效果:如果在数据库中日期字段的值为空的时候这个checkBox就默认没有选择,同时这个日期控件不能使用,是灰色显示。如下:

如果数据库中有相应的值,那么这个控件里面显示的就是相应的日期值,同样的,通过这个复选框我们可以认为,如果前面这个ckeckBox没有被选择,那么我们就可以认为用户并没有选择这个值,如果这个值被选择了那么我们就应该考虑这个值需要添加到数据库中。我们可以添加这么一个判断:

if (this.dtpBornDate.Checked)  // 用来判断用户是否需要添加这个日期类型的值,由用户自己决定

    {

      sql = string.Format("insert into student values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", this.txtPass.Text.Trim(), this.txtUserName.Text.Trim(), gender, gradeid, this.txtPhone.Text, this.txtAaddress.Text, Convert.ToDateTime(this.dtpBornDate.Text), this.txtEmail.Text);

       }

  Else    //如果用户没有选择这个复选框,就认为用户不需要这个值,SQL语句做相应修改

      {

       sql = string.Format("insert into student(loginpwd,studentname,gender,gradeid,phone,address,email) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}')", this.txtPass.Text.Trim(), this.txtUserName.Text.Trim(), gender, gradeid, this.txtPhone.Text, this.txtAaddress.Text, this.txtEmail.Text);

      }

这里说说明了,如果日期值需要那么就在insert的时候加上这个字段的值,否则就不考虑这个值了!

这样,如果用户想输入一个日期值那先选择checkbox为可用,这样就可以添加值到数据库中了。它不会给用户一个误解,也没有增加用户的难度,况且可以适应不同场合的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值