我正在尝试基于将它们与其他行进行比较来格式化一些datagridview行。
这是我到目前为止的代码。
For Each row As DataGridViewRow In DaisyServicesForm.DataGridView1.Rows
If row.Cells("UnitCost").Value = row.Cells("UnitCost").Value And (row.Cells("FromDate").Value <= row.Cells("ToDate").Value And row.Cells("ToDate").Value >= row.Cells("FromDate").Value) Then
row.DefaultCellStyle.ForeColor = Color.Blue
End If
Next
但我不希望VB将行与自己进行比较,我希望它采取第一行,然后将其与其他所有行进行比较......然后取第二行并将其与其他行进行比较。
如果它在SQL中,它看起来像:
i.unitcost = i2.unitcost
and ((i.FromDate <= i2.ToDate)
and (i.ToDate >= i2.FromDate))
希望有意义,任何帮助都非常感激。
答案 0 :(得分:1)
如果你希望迭代每个项目(行)并将自己与列表中的所有其他项目(网格)进行比较,则需要内部For Loop
。
For Each rowOuter As DataGridViewRow In DaisyServicesForm.DataGridView1.Rows
For Each rowInner As DataGridViewRow In DaisyServicesForm.DataGridView1.Rows
If rowOuter.Cells("UnitCost").Value = rowInner.Cells("UnitCost").Value And
(rowOuter.Cells("FromDate").Value <= rowInner.Cells("ToDate").Value And rowOuter.Cells("ToDate").Value >= rowInner.Cells("FromDate").Value) Then
rowOuter.DefaultCellStyle.ForeColor = Color.Blue
End If
Next
Next
您可能需要检查我在那里的if语句,但这个想法应该有效。此外,您需要添加一个检查,以查看该行是否正在检查自己。