如何根据asp.net Gridview中的DateDiff值显示字符串?
我有一个查询要显示任务完成日期和任务截止日期的如何根据asp.net Gridview中的DateDiff值显示字符串?,asp.net,sql,datetime,gridview,datediff,Asp.net,Sql,Datetime,Gridview,Datediff,我有一个查询要显示任务完成日期和任务截止日期的DATEDIFF。我想显示任务是否及时完成,并根据日期差的值将结果显示为“及时完成”和“未及时完成” select memname, CONVERT(nvarchar, DATEDIFF(d,CompleteDate,FreeTrialTaskMst.Enddate)) AS Difference from member 在这里,如果按时完成,我得到值>=0 如何操作?最简单、最易读的方法可能是使用RowDataBound: p
DATEDIFF
。我想显示任务是否及时完成,并根据日期差的值将结果显示为“及时完成”和“未及时完成”
select memname,
CONVERT(nvarchar, DATEDIFF(d,CompleteDate,FreeTrialTaskMst.Enddate)) AS Difference
from member
在这里,如果按时完成,我得到值>=0
如何操作?最简单、最易读的方法可能是使用
RowDataBound
:
protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRow row = ((DataRowView)e.Row.DataItem).Row;
Label lblDeadLine = (Label)e.Row.FindControl("lblDeadLine");
int deadLine = int.Parse(row.Field<String>("DeadLine"));
if(deadLine < 0)
lblDeadLine.Text = "Not Completed in Time";
else
lblDeadLine.Text = "Completed in Time";
}
}
受保护的无效gridview1\u行数据绑定(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
DataRow row=((DataRowView)e.row.DataItem).row;
Label lblDeadLine=(Label)e.Row.FindControl(“lblDeadLine”);
int deadLine=int.Parse(行字段(“deadLine”);
如果(截止日期<0)
lblDeadLine.Text=“未及时完成”;
其他的
lblDeadLine.Text=“及时完成”;
}
}
但我建议首先也按照sql执行(选择CASE WHEN…
)
顺便问一下,为什么要将
int
值从DATEDIFF
转换为nvarchar
?非常感谢@vikram,这对我很有帮助。
select memname,
(case when DATEDIFF(d,CompleteDate,FreeTrialTaskMst.Enddate) >0 then 'completed'
else 'Not Complete' end) as DeadLine
from member
select memname,
(case when DATEDIFF(d,CompleteDate,FreeTrialTaskMst.Enddate) >0 then 'completed'
else 'Not Complete' end) as DeadLine
from member