我有一个数据库表,其中包含用户名及其当前活动位置的列表,即一个名为SEQUENCE
的整数。
我将序列号列表放入一个只有一列的数据表中(例如“ SELECT SEQUENCE FROM TABLE”):
dtUsers = CLS_USERS.GetUsers(User)
它不包括当前用户,这就是为什么我在User
中进行解析。
然后我要做的是遍历数据表,对于每个数字,我想将datagridview中的匹配行(也具有SEQUENCE列)设置为不同的颜色。这是我当前的代码:
For Each row As DataRow In dtUsers.Rows
intSeq = row("SEQUENCE")
For Each dgv_row As DataGridViewRow In dgvCandList.Rows
If dgv_row.Cells("CURRENT_SQ").Value = intSeq Then
dgv_row.DefaultCellStyle.BackColor = Color.Cyan
Else
dgv_row.DefaultCellStyle.BackColor = Color.Grey
End If
Next
Next
但是,所有行都被突出显示,而不是仅突出显示dgv_row.Cells("SV_CURRENT_CAND_SQ").Value = intSeq
的那些行……我已经验证了此循环是否正常工作,因此它必须是dgv_row.DefaultCellStyle.BackColor = Color.Cyan
,这是不正确的?>
如果是这样,我应该如何正确地分配特定DataGridRow的行背景色?
编辑:此代码正确运行,我的问题与该循环外的错误有关,该错误导致将背景色发送给所有内容,如果未将BackColor设置为默认值,则永远不要将其设置为默认值,如果它不在dtUsers中。
答案 0 :(得分:-1)
DefaultCellStyle不是正确的属性,因为它是其他未设置样式的行的默认设置。您可以在客户端或服务器端实现基于行的样式。
客户端解决方案将是填充必要的输入值并适当地测试整数。 html行元素如下所示:
<tr runat="server" class=<%# If(Eval("x")=Eval("y"), "style1", "style2") %> >
其中“ style1”和“ style2”是包含您的颜色首选项的CSS元素。
服务器端的解决方案是使用RowDataBound方法并根据您的条件设置row.BackColor。