Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Gridview根据日期更改背景颜色_Asp.net_Vb.net_Gridview - Fatal编程技术网

Asp.net Gridview根据日期更改背景颜色

Asp.net Gridview根据日期更改背景颜色,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,我想根据当前日期更改gridview上的背景色。下面的代码可以工作,但是未来的日期将在两天后开始,而不是明天的一天。我是缺少代码中的某些内容,还是应该以不同的方式进行修改。如果e.Row.RowType=DataControlRowType.DataRow,则 If e.Row.RowType = DataControlRowType.DataRow Then Dim data As DateTime = Convert.ToDateTime(Direct

我想根据当前日期更改gridview上的背景色。下面的代码可以工作,但是未来的日期将在两天后开始,而不是明天的一天。我是缺少代码中的某些内容,还是应该以不同的方式进行修改。如果e.Row.RowType=DataControlRowType.DataRow,则 If e.Row.RowType = DataControlRowType.DataRow Then Dim data As DateTime = Convert.ToDateTime(DirectCast(e.Row.DataItem, DataRowView)("Date").ToString()) Dim diff As TimeSpan diff = DateTime.Now.Subtract(data) Dim days As Integer = diff.Days 'Yellow = past date / White = current date / Blue = future date If days > 0 Then e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#FFFFBB") 'past date' ElseIf days < 0 Then e.Row.BackColor = Drawing.ColorTranslator.FromHtml("#BAD8FF") 'future date' ElseIf days = 0 Then 'present date 'do nothing End If End If Dim data As DateTime=Convert.ToDateTime(DirectCast(例如Row.DataItem,DataRowView)(“日期”).ToString()) Dim diff作为时间跨度 diff=DateTime.Now.Subtract(数据) 整数天数=差异天数 '黄色=过去日期/白色=当前日期/蓝色=未来日期 如果天数>0,则 e、 Row.BackColor=Drawing.ColorTranslator.FromHtml(“#FFFFBB”)“过去日期” 如果其他天数小于0 e、 Row.BackColor=Drawing.ColorTranslator.FromHtml(“#BAD8FF”)“未来日期” 其他天数=0,则为“当前日期” “什么也不做 如果结束
如果您可能希望使用
DateTime
Date
属性来截断时间,则结束:

Dim data = DirectCast(e.Row.DataItem, DataRowView)
Dim day As Date = data.Row.Field(Of Date)("Date").Date
Dim daysDiff As Int32 = (Now.Date - day).Days

谢谢你的回复。我在代码中应用了您的建议,但在“Dim day As Date=data.Row.Field(Of Date)(“Date”).Date“error message”System.InvalidCastException:指定的强制转换无效。有什么想法吗?我使用您的建议解决了问题,我将代码修改为
Dim data As DateTime=Convert.ToDateTime(DirectCast(e.Row.DataItem,DataRowView)(“Date”).ToString())Dim day As Date=data.Date Dim daysDiff As Int32=(Now.Date-day).Days
,它没有产生任何错误,明天的日期现在以蓝色突出显示。我应该写不同的日期,还是保持原样,因为它可以工作?@g_shockTan:为什么要将日期字段转换为字符串,然后再转换回
日期
,这效率很低,可能会导致本地化问题。是否将日期存储为字符串?否。它存储为SQL中的DateTime。关于如何编写它,您有什么建议?我尝试了上面的代码,但出现了一个错误,指定的强制转换无效。如果没有代码和异常(使用堆栈跟踪),很难提供帮助。通常,您首先应该使用正确的类型。如果您使用了
DataAdapter
来填充表格,则字段的类型应该已经是
Date