C# 如何在asp.net的gridview中将空日期字段显示为空白

C# 如何在asp.net的gridview中将空日期字段显示为空白,c#,asp.net,sql-server,C#,Asp.net,Sql Server,检索和显示空日期字段时,它显示为1/1/1900 12:00:00 AM。 aspx代码 <asp:TemplateField HeaderText="Task Completed dt"> <ItemTemplate> <%#Eval("TaskCompletedDt")%> </ItemTemplate>

检索和显示空日期字段时,它显示为1/1/1900 12:00:00 AM。 aspx代码

 <asp:TemplateField HeaderText="Task Completed dt">
                <ItemTemplate>
                    <%#Eval("TaskCompletedDt")%>
                </ItemTemplate>
                 <EditItemTemplate>

                   <asp:TextBox ID="txtTaskCompletedDt" runat="server" Text='<%# Eval("TaskCompletedDt") %>'>
                  </asp:TextBox>

                </EditItemTemplate>
            </asp:TemplateField>
![enter image description here][1]

您是否尝试过使用eval并与默认的空时间进行比较

 text='<%#IIF(Eval("TaskCompletedDt") = '1900-01-01 00:00:00.000', "", DateField) %>'
text=''

类似这样的内容应该可以满足您的需要,第一部分就是您要计算的值,如果第一条语句为true,您希望将其设置为“”,如果Eval(“TaskCompletedDt”)不等于该日期,您希望该值为您的实际日期。

如果您认为这是在数据库中插入
NULL
值,那么你错了:

TaskCompletedDt = 
    CASE WHEN TaskCompletedDt = '1900-01-01 00:00:00.000' THEN '' 
    ELSE CONVERT(VARCHAR(10), TaskCompletedDt, 103) 
    END 
您正在向SQL Server传递一个空字符串,而SQL Server又默认为默认值
1900-01-01 00:00:00.000

如果确实要存储
NULL
或检索NULL值,请传入
NULL

TaskCompletedDt = 
    CASE WHEN TaskCompletedDt = '1900-01-01 00:00:00.000' THEN NULL 
    ELSE CONVERT(VARCHAR(10), TaskCompletedDt, 103) 
    END

将查询写入codebehind中以显示网格。它确实有效

string query = "SELECT distinct val1,val2,(case when year(convert(date,DATE,103)) <= 1900 then null else DATE end) as Date FROM tablename";```

string query=“SELECT distinct val1,val2,(case when year(convert(date,date,103))只需将string.IsNullOrEmpty()方法与三元(?)运算符一起使用,您能详细说明plz@sainprecept这一点吗?”
string query = "SELECT distinct val1,val2,(case when year(convert(date,DATE,103)) <= 1900 then null else DATE end) as Date FROM tablename";```