我正在尝试格式化一些datagridview
行,具体取决于它们是否出现在SQL select语句中。
到目前为止,这是我的代码。
我有一个功能来检查条件是否为真。
Public Shared Function checkdata(ByVal row As Integer) As Boolean
Dim da As SqlDataReader
Using conn As New SqlClient.SqlConnection("server=inlt01\SQLEXPRESS; database=DaisyServices; integrated security=yes")
Using cmd As SqlClient.SqlCommand = conn.CreateCommand()
cmd.CommandText = "SELECT * FROM [DaisyServices].[dbo].[DaisyServicesIndigo] i JOIN [DaisyServices].[dbo].[DaisyServicesIndigo] i2 on i.cli = i2.cli and i.quantity = i2.quantity and i.unitcost = i2.unitcost and i.totalcost = i2.totalcost and i.[description] = i2.[description] and ((i.FromDate <= i2.ToDate) and (i.ToDate >= i2.FromDate)) WHERE i.id<>i2.id "
conn.Open()
da = cmd.ExecuteReader
If da.HasRows Then
Return True
Else
Return False
End If
End Using
End Using
End Function
用IF
语句来检查每一行。
For intcount = 0 To DaisyServicesForm.DataGridView2.Rows.Count - 1
If checkdata(intcount) = True Then
DaisyServicesForm.DataGridView2.Rows(intcount).DefaultCellStyle.ForeColor = Color.Blue
End If
Next
问题是我的DataGridView中的所有行都是蓝色。
如果我运行SQL,我只得到2个结果。
我的目标是在SQL语句中返回的2行在DataGridView上使用前蓝色进行格式化。
非常感谢任何帮助。
答案 0 :(得分:2)
将检查功能更改为此并尝试 公共共享函数checkdata(ByVal row As Integer)As Boolean
Dim da As SqlDataReader
Using conn As New SqlClient.SqlConnection("server=inlt01\SQLEXPRESS; database=DaisyServices; integrated security=yes")
Using cmd As SqlClient.SqlCommand = conn.CreateCommand()
cmd.CommandText = "SELECT * FROM [DaisyServices].[dbo].[DaisyServicesIndigo] i JOIN [DaisyServices].[dbo].[DaisyServicesIndigo] i2 on i.cli = i2.cli and i.quantity = i2.quantity and i.unitcost = i2.unitcost and i.totalcost = i2.totalcost and i.[description] = i2.[description] and ((i.FromDate <= i2.ToDate) and (i.ToDate >= i2.FromDate)) WHERE i.id<>i2.id "
conn.Open()
da = cmd.ExecuteReader
If da.HasRows Then
while da.read
if da!fieldindatabase=datagridview.rows(intcount).columns(yourfield)
return true
Else
Return False
End If
end while
End Using
End Using
End Function
这里给出了'fieldindatabase'从数据库获得的值以及'youfield'的datagrid中相应字段的列。
注意:强>
不幸的是,这段代码将对datagrid中的每一行执行select查询。为了防止这种情况,您可以使用查询来填充可以在函数内部访问的数据表,这样它只会执行一次(以改善表现并减少延迟)。