在C#环境下,现在我有一个SQL数据库,里面有几个日期字段要绑定出来,如果我绑定到DTPicker     控件上时,遇到日期字段是空值,他就会报错,如果绑定到MASKEDTEXTBOX上,掩码设为短日期格式(0000-00-00),则数据库内像2009-7-1这样的数据则显示成了:2009-71-  这样子,各位有没有什么好的办法帮我解决一下,先谢了!

解决方案 »

  1.   

    DateTime.Parse("2009-7-1").ToString("yyyy-MM-dd")再绑定
    判断是否为DBNull.Value再赋值this.dateTimePicker1.Value = DateTime.ParseExact("", "yyyy-MM-dd ", null);
      

  2.   

    首先自己定义一个为空时的日期值,由于它不支持空值,那么一般可以将最小可能日期作为空值。然后重写该控件的Value属性,在set操作中判断传入的值是否为null,如果为null,则设置
    base.Value = base.MinDate
      

  3.   


    只能这样首先从数据中把日期的格式进行转换 
    建下面 
    select convert(varchar(10),getdate(),120)
    ----------
    2009-11-27
    然后在C#中直接绑定就行啦
      

  4.   

    (1)重写DateTimePicker 的 value属性 使其支持空值. 
    (2)绑定DateTimePicker
      

  5.   

    给出一段代码参考,不过是否对于绑定有效,还需要实际测试。
        public class CusDateTimePicker : DateTimePicker
        {
            bool isnull = false;
            public new DateTime? Value
            {
                get
                {
                    if (isnull)
                        return null;
                    else
                        return base.Value;
                }
                set
                {
                    if (value == null)
                    {
                        isnull = true;
                        base.Value = base.MinDate;
                    }
                    else
                    {
                        isnull = false;
                        base.Value = (DateTime)value;
                    }
                }
            }
        }
      

  6.   

    各位讲的都是,DateTimePicker的,有没有用MASKEDTEXTBOX的方法
      

  7.   

    用MASKEDTEXTBOX的话,由于数据类型不再是DateTime了,而是String了,那就直接按照#6楼的方式,查询时转换为格式化后的Varchar类型就可以了。
      

  8.   

    已经搞定了,用的是maskedtextbox,是重写FORMAT事件和parse事件就可以了