如何通过使用 vb.net 比较不同表中的两列来更改 datagridview 中的行颜色?

How to change row color in datagridview by comparing two columns from different tables using vb.net?

没有成功!

如果 tblcon 的用户和 tbltrns 的 billmonth 存在于 tbltrns 中,然后用红色突出显示 tblcon 的行

代码:

 Private Sub checkexist()

For Each row As DataGridViewRow In DataGridView1.Rows

        ConObj = New SqlConnection(ConStr)
        ConObj.Open()
        Dim qry As String = "SELECT * FROM tblTrns WHERE userName=@userName and bill_month=@bill_month"
        CmdObj = New SqlCommand(qry, ConObj)
        CmdObj.Parameters.AddWithValue("@bill_month", DateTimePicker1.Text)
        CmdObj.Parameters.AddWithValue("@userName", (row.Cells("User").Value.ToString))

        drObj = CmdObj.ExecuteReader()

    If drObj.HasRows Then
        row.DefaultCellStyle.BackColor = Color.Red

    End If
    Next

   ConObj.Close()
End Sub

查询网格

 Public Function GetData() As DataView

    ConObj = New SqlConnection(ConStr)
    ConObj.Open()
    CmdObj = New SqlCommand
    dsObj = New DataSet
    daObj = New SqlDataAdapter()

    Dim SelectQry = "SELECT UserName[User],doj[Connection Date],packagename[Package],profilename[Profile],billing[Payment],fees[Fees],connectionstatus[Status] from TblCon"

    CmdObj.CommandText = SelectQry
    CmdObj.Connection = ConObj
    daObj.SelectCommand = CmdObj
    daObj.Fill(dsObj)
    TvObj = dsObj.Tables(0).DefaultView

    Return TvObj
    ConObj.Close()

End Function

getdata 中的查询已更改但未成功。请指导................................................ ..................................................... ..................................................... ..................................................... ...................................

Public Function GetData() As DataView

    ConObj = New SqlConnection(ConStr)
    ConObj.Open()
    CmdObj = New SqlCommand
    dsObj = New DataSet
    daObj = New SqlDataAdapter()

    Dim SelectQry = Dim SelectQry = "SELECT UserName[User],doj[Connection Date],packagename[Package],profilename[Profile],billing[Payment],fees[Fees],conn‌​‌​‌​ectionstatus[Status], (SELECT ISNULL(COUNT(*), 0) FROM tblTrns WHERE tblTrns.userName = tblCon.UserName AND bill_month = '" & DateTimePicker1.Text & "') [Comparison] from TblCon"

    CmdObj.CommandText = SelectQry
    CmdObj.Connection = ConObj
    daObj.SelectCommand = CmdObj
    daObj.Fill(dsObj)
    TvObj = dsObj.Tables(0).DefaultView

    Return TvObj
    ConObj.Close()

End Function

我建议您在网格中的新列中填充一个用于比较的值,并将其可见性设置为 false。 您可以通过第二个 table 上的子选择或左连接来实现(如果您希望示例只是 post 填充您的网格的查询)。

根据您的比较列,您可以使用 GridView 的 CellPainting 事件。像这样:

Private Sub grdGridView_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles grdGridView.CellPainting
    If e.RowIndex >= 0 Then

        If grdGridView.Rows(e.RowIndex).Cells("colComparison").Value <> "0" And Not IsNothing(grdGridView.Rows(e.RowIndex).Cells("colComparison").Value) Then
            e.CellStyle.BackColor = Color.OrangeRed
            e.CellStyle.SelectionBackColor = Color.IndianRed
        End If

    End If
End Sub