我有两个网格控件是同一个表,但由于它是审计跟踪历史记录,因此列的某些单元格值与原始值不同。这搞乱了我的同步滚动。
所以我要做的是将列宽设置为等于两个网格之间的较大列值。这就是我到目前为止的做法:
Private Sub GridView1_RowCellStyle(sender As Object, e As RowCellStyleEventArgs) Handles gvwOriginalAuditValues.RowCellStyle
Dim originalColumnWidth As New List(Of Integer)()
Dim modifiedColumnWidth As New List(Of Integer)()
If gvwOriginalAuditValues.RowCount > 0 And gwvModifiedAuditValues.RowCount > 0 Then
If gvwOriginalAuditValues.GetRowCellDisplayText(e.RowHandle, e.Column) <> gwvModifiedAuditValues.GetRowCellDisplayText(0, e.Column.FieldName) Then
e.Appearance.BackColor = Color.Yellow
End If
For Each col As DevExpress.XtraGrid.Columns.GridColumn In gvwOriginalAuditValues.Columns
originalColumnWidth.Add(col.Width)
Next
For Each col2 As DevExpress.XtraGrid.Columns.GridColumn In gwvModifiedAuditValues.Columns
modifiedColumnWidth.Add(col2.Width)
Next
End If
End Sub
现在我遇到麻烦的下一步是比较两个列表(originalColumnWidth和modifiedColumnWidth)。它们将具有完全相同的列数,顺序相同。那么我可以比较两个列表的任何想法,当两者之间存在差异时,将列宽更改为更大的值,它们是否相等?
答案 0 :(得分:0)
你可以试试这个:
For i As Integer = 0 To originalColumnWidth.Count
if (originalColumnWidth(i) > modifiedColumnWidth(i)) Then
modifiedColumnWidth(i) = originalColumnWidth(i)
ElseIf (originalColumnWidth(i) < modifiedColumnWidth(i)) Then
originalColumnWidth(i) = modifiedColumnWidth(i)
End if
Next