2015-01-16 46 views
1

我想格式化一些datagridview行的基礎上與其他行進行比較。vb.net每個循環比較一行與其他行

這是我到目前爲止的代碼。

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

也許我錯了,但如果你達到目標,那麼你會在這裏看到很多藍色。 – Steve

+0

還有其他一些條件,這只是示例代碼。 – user3580480

+0

看來你需要在這一個之內的第二個For循環。但是我擔心,如果您將行與其他行進行比較(可能是您已更改的行),則可能會發現其他一些問題。你的目標是什麼?您可能只想比較數據源。 – Kat

回答

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語句,但這個想法應該工作。此外,你需要添加一個檢查,看看它是否檢查自己。

+0

正是我在找的東西。謝謝 – user3580480

相關問題