所以基本上我想得到的是出租物业的付款系统。
我已经建立了一个数据库(为了易于使用而可以访问),我现在正在寻找一种将datagridview中的日期与今天的日期进行比较的方法。如果最后一次付款的日期晚了30天,则必须变成红色。如果其<30,则应保持绿色。
现在,我想知道如何做到这一点,因为我似乎无法使其正常工作。
由于我是vb.net语言的新手,所以我没有任何工作。我认为发布任何代码都是没有用的,因为所有代码都用红色下划线标出,并且我的程序甚至无法运行。
我认为这将是
的风格 If me.dgv.columns("1") > 30:
me.dgv.row.defaultcellstyle.color = "red"
End if
日期以升序排序/显示,不确定是否有帮助?
任何帮助都将非常有价值,在此先感谢您!
答案 0 :(得分:2)
date.Now.addDays(30)
date.Now.addDays(-30)
之前30天进行检查使用以下方法为单元格上色:
For Each dr As DataGridViewRow In DataGridView1.Rows
If CDate(dr.Cells(0).Value) > Date.Now.AddDays(30) Then
dr.Cells(0).Style.ForeColor = Color.Red
End If
Next
您还可以循环这些单元格以检查所有DGV单元格的日期并进行比较
答案 1 :(得分:0)
根据我的经验,最好在RowPrePaint事件中处理此问题。
示例:
Public Class Test
Private Shared Rnd As New Random
Private Sub FormControls_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Start Sample
DataGridView1.Columns.Add(New DataGridViewTextBoxColumn With {
.Name = "MyDate",
.ValueType = GetType(DateTime)})
For i As Integer = 0 To 1000
'create random dates in the past
DataGridView1.Rows.Add(Now.AddDays(-Rnd.Next(0, 25)))
Next
'End Sample
End Sub
Private Sub DataGridView1_RowPrePaint(sender As Object, e As DataGridViewRowPrePaintEventArgs) Handles DataGridView1.RowPrePaint
Dim DgvRow As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
With DgvRow
If DgvRow IsNot Nothing AndAlso DgvRow.Cells(0).Value IsNot Nothing AndAlso DgvRow.Cells(0).Value IsNot DBNull.Value Then
If Now.Subtract(CDate(DgvRow.Cells(0).Value)).TotalDays > 20 Then
DgvRow.DefaultCellStyle.BackColor = Color.Yellow
Else
DgvRow.DefaultCellStyle.BackColor = Color.Empty
End If
End If
End With
End Sub
End Class