1900-1-1 0:00:00如何不显式

andylauxing 2010-10-13 04:11:22
我在FormView中有一TextBox绑定了后数据"审核日期" (Bind("审核日期")),
但后台有一些时间为1900-1-1 0:00:00,请问如何不显示这样的日期?只显示为空,绑定表达式应如何写?
...全文
897 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 wyq29 的回复:]
引用 26 楼 jenny0810 的回复:
引用 14 楼 yumen3501 的回复:
实体类修改一下即可:



C# code

private DateTime? _date;
public DateTime? DATE
{
set { _date= value; }
get { return _date; }
}

DateTime后加……
虚心请教 加……
[/Quote]

这个叫nullable

不过这是有个坑的,一般生成三层结构的代码不是nullable的,也就是datetime类型的

这样datetime 和 datetime? 类型需要相互转换,而这个代价就比较大,因为 自动生成的代码很容易

因为数据库的改变而改变,这样每次都要修改一遍,代价有些大

通常情况在app_code 文件夹下 PageBase.cs 文件 里面加一个

public string ShowCorrectDateTime(string timeString)
{
if (timeString == string.Empty)
{
return string.Empty;
}
if (Convert.ToDateTime(timeString).ToString("yyyy-MM-dd") == "1900-01-01")
{
return string.Empty;
}
else
{
return Convert.ToDateTime(timeString).ToString("yyyy-MM-dd");
}
}

这个函数 需要显示的时候调用即可
booth.chen 2010-10-13
  • 打赏
  • 举报
回复
数据类型 问题
wyq29 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 jenny0810 的回复:]
引用 14 楼 yumen3501 的回复:
实体类修改一下即可:



C# code

private DateTime? _date;
public DateTime? DATE
{
set { _date= value; }
get { return _date; }
}

DateTime后加……
虚心请教 加个问号是啥意思??
[/Quote]

加个问号 代表可以是null值
但对于日期类型 asp.net是插入不了null的值 呵呵。。。。
zhongxiangyun 2010-10-13
  • 打赏
  • 举报
回复
设置断点,去调试一下。
jenny0810 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yumen3501 的回复:]
实体类修改一下即可:



C# code

private DateTime? _date;
public DateTime? DATE
{
set { _date= value; }
get { return _date; }
}

DateTime后加……
[/Quote] 虚心请教 加个问号是啥意思??
打一壶酱油 2010-10-13
  • 打赏
  • 举报
回复
。。。看来我写的lz都没试过
Netcean 2010-10-13
  • 打赏
  • 举报
回复
<%#Eval("日期字段").ToString().Trim()=="1900-1-1 0:00:00"?"":Eval("日期字段")%>
======================
这个试下
andylauxing 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 yumen3501 的回复:]
唉,我的代码粘那半天. 不参考也没办法
[/Quote]

yumen3501: 对不起,有点不明,你这几行代码写在哪儿,小弟对实体类不懂呀,初学,请见谅.


卓天 2010-10-13
  • 打赏
  • 举报
回复
数据库里面默认就是1900-1-1 0:00:00,在页面上是不会显示的
酷儿 2010-10-13
  • 打赏
  • 举报
回复
你最出来是时间是空还是?如果为空你可以用三元运算给赋值 亦或用if来判断赋值 如果不为空就不用说什么了 时间要加个{,d/D} 两个d不一样的
Assassin_ 2010-10-13
  • 打赏
  • 举报
回复
唉,我的代码粘那半天. 不参考也没办法
xiesiren 2010-10-13
  • 打赏
  • 举报
回复
要从源头上解决这事,你插入数据库是就要判断插入的是不是空,如果为空就是NULL
andylauxing 2010-10-13
  • 打赏
  • 举报
回复
回楼上,不对呀,FormViewMode智能提示只有三种:insert,edit,readonly
没有你说的label呀?另:我显示数据的控件类型是TextBox呀 。
koukoujiayi 2010-10-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 andylauxing 的回复:]
5楼的代码,试了没反应:
protected void FormView1_DataBound(object sender, EventArgs e)
{
// if (FormView1.CurrentMode == FormViewMode.ReadOnly)
// {
TextBox tb = (TextBox)FormView1.FindControl("txt_……
[/Quote]
ReadOnly模式是TextBox??
常规应该是Label哦!!
andylauxing 2010-10-13
  • 打赏
  • 举报
回复
5楼的代码,试了没反应:
protected void FormView1_DataBound(object sender, EventArgs e)
{
// if (FormView1.CurrentMode == FormViewMode.ReadOnly)
// {
TextBox tb = (TextBox)FormView1.FindControl("txt_zfrq");
if (tb.Text == "1900-1-1 0:00:00")
tb.Text = "";
// }

}
wangdj2 2010-10-13
  • 打赏
  • 举报
回复
<%#FormatDate(Eval("审核日期"))%>

后台
public string FormatDate(object e)
{
if (e != null && !e.ToString().Trim().Equals(""))
{
try
{
DateTime dt = DateTime.Parse(e.ToString());
if (dt == DateTime.MinValue)
{
return "";
}
return dt.ToString("yyyy-MM-dd HH:mm:ss");
}
catch (FormatException ex)
{
return "";
}
}
return "";
}
Assassin_ 2010-10-13
  • 打赏
  • 举报
回复
实体类修改一下即可:


private DateTime? _date;
public DateTime? DATE
{
set { _date= value; }
get { return _date; }
}

DateTime后加个问号就行.
andylauxing 2010-10-13
  • 打赏
  • 举报
回复
8楼的报错:
指定的转换无效。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidCastException: 指定的转换无效。
<td style="width: 333px">
行 122: <asp:TextBox ID="txt_zfrq" runat="server" ReadOnly="True" Text='<%# ((DateTime)Eval("zfrq")).Year==1900?"":Eval("zfrq").ToString() %>'></asp:TextBox></td>
行 123: <%--string.Format((Convert.IsDBNull({0}) ? Convert.ToDateTime("1900-01-01") : Convert.ToDateTime({1})).ToShortDateString()),Eval("zfrq"),Eval("zfrq"))--%>

源错误:
chenyu112 2010-10-13
  • 打赏
  • 举报
回复
8楼的没试?
鱼C缸 2010-10-13
  • 打赏
  • 举报
回复
数据库设计的问题,不要让它默认最小日期
加载更多回复(10)
源码链接: https://pan.quark.cn/s/a4b39357ea24 ### Ubuntu 用户磁盘空间分配与 Linux 硬盘分区方案深入剖析 #### 标题与描述中的核心知识要点说明 本文件将系统性地阐释在 Ubuntu 操作系统中如何为用户科学地分配磁盘空间,并深入分析适用于 Linux 的硬盘分区策略。文件不仅会介绍基础的目录结构及其功能,还会提供具体的分区指导以及在实际操作过程中需要留意的事项。 #### 目录结构及其功能说明 - **/bin**:系统常用基础命令的存储位置。 - **/boot**:包含启动时所需文件,例如内核镜像和初始化脚本等。 - **/dev**:存放设备文件。 - **/etc**:存储系统配置信息。 - **/home**:用户个人目录,每个用户拥有独立的子目录。 - **/lib**:存放运行二进制文件所需的共享库。 - **/mnt**:用于临时挂载其他文件系统的目录,可用于挂载软盘或 CD-ROM 设备。 - **/proc**:虚拟文件系统目录,存储当前运行内核的相关信息。 - **/root**:超级用户(root)的主目录。 - **/sbin**:系统管理程序的存放位置。 - **/tmp**:临时文件存储的目录。 - **/usr**:存放只读数据,包括应用程序的可执行文件和文档等。 - **/var**:存储可变数据文件,例如日志文件和邮件队列等。 - **/X11R6**:X Window 系统的安装路径。 #### 硬盘分区策略分析 文件中强调,在 Linux 环境下进行硬盘分区时需要综合考量多个因素,以确保系统的稳定运行和性能表现。以下是一些关键的分区建议: 1. **/boot ...

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧