情况如下:我在数据库里面有一个时间类型的列,用来保存时间信息。
但是在插入数据的时候如果这个列没有插入数据 它会默认的插入 1900-01-01 00:00:00.000 这个时间用公司的自定义控件绑定出来的时候。我希望 如果值是 1900-01-01 00:00:00.000 就绑定为 “” 
因为是公司的自定义控件,只能用DataField 绑定。所以我以前知道的<%# Convert.ToDateTime(Eval("rq")).ToShortDateString()=="1900-01-01 00:00:00.000"?"----":Convert.ToDateTime(Eval("rq")).ToShortDateString() %> 这种方法就不能用了想了两种方法,1 是在用sql语句查询的时候,发现值是 1900-01-01 00:00:00.000 就替换为 “”  这样绑定出来就也是空
2 就是让DataField可以判断值 然后改变 就像上面的一样 可是两种方法都不知道如何实现。请高人帮我 谢谢!

解决方案 »

  1.   

    自定义控件绑定。请问如何实现的。难道不支持三元运算和Eval()?
      

  2.   

    楼上方法应该是没问题的,EVAL可以支持计算式的。你要检查下报错原因
    另外,为什么不吧你数据库的这个栏位设成 ALLOW NULL呢?
      

  3.   

    存进去的话,如果列的格式是datetime,你是不可以存空字符串进去的
      

  4.   

    我只发现可以用DataField 绑定 这个可以用三元运算么
      

  5.   

    在数据库查询的时候将该日期转换成varchar类型的。
      

  6.   

    直接绑定
    <%# Eval("rq").ToString()=="1900-01-01 00:00:00.000"?"----":Convert.ToDateTime(Eval("rq")).ToShortDateString() %> 
    如果不对  尝试下 直接输出是什么样子,复制下替换掉==之后的值
    sql查询是替换    select   replace(字段名,要替换的值,替换成什么)  from  表名
      

  7.   

    你的比较不对,ToShortDateString()方法输出的格式就是:2011-01-01,你同1900-01-01 00:00:00.000肯定不对啊!
    改为:1900-01-01试试
      

  8.   

    绑定替换的话,楼主可以 编写一个方法来控制啊?<%# ReDTString(Eval("rq"))%>CS代码 注意传入参数时候的数据类型
    protected string ReDTString(string Str)
    {
    Str.Replace("1900-01-01 00:00:00.000", "");
    return Str;
    }
      

  9.   

    将传入的类型 ToString() 一下