我有一个带有数据源的 DatagridView,如下所示:
bindingSource = DataTable
dataGridView.DataSource = bindingSource
编辑单元格或添加新行时,我会应用不同的格式样式,如果单击其中一个列标题对 dataGridView 进行排序,则会丢失格式样式,所以我的问题是:
对 datagridview 进行排序后,我怎么知道哪些单元格更改或添加了?,所以我可以重新应用格式样式
VB .Net 或 C# 都可以
我有一个带有数据源的 DatagridView,如下所示:
bindingSource = DataTable
dataGridView.DataSource = bindingSource
编辑单元格或添加新行时,我会应用不同的格式样式,如果单击其中一个列标题对 dataGridView 进行排序,则会丢失格式样式,所以我的问题是:
对 datagridview 进行排序后,我怎么知道哪些单元格更改或添加了?,所以我可以重新应用格式样式
VB .Net 或 C# 都可以
我终于实现了所需的功能,向数据表添加了一个新字段/列,而不是为该字段中的整行保留一个值,我存储表示每个单元格的状态/样式的字符串,例如“,,E,,,E”所以这个示例字符串将指示索引 2 和 5 处的单元格应该具有已编辑的样式。
我在 CellValueChanged 事件中创建/更改该字符串,示例:
Private Sub DataGridView_CellValueChanged(sender As System.Object, e As DataGridViewCellEventArgs) Handles DataGridView.CellValueChanged
If e.RowIndex = -1 Or IsNothing(DataGridView.CurrentCell) Then
Return
End If
Dim cellPosition As Short = DataGridView.CurrentCell.ColumnIndex
Dim Styles(25) As String
Dim stylesCell = DataGridView.Rows(e.RowIndex).Cells("CellStyleDescriptor").Value
If Not IsDBNull(stylesCell) And _
Not IsNothing(stylesCell) Then
Styles= Split(stylesCell, ",")
End If
If IsDBNull(DataGridView.Rows(e.RowIndex).Cells("Id").Value) Then
For i As Integer = 0 To 25 'New row is being added
Styles(i) = "N"
Next
Else
Styles(cellPosition) = "E" 'Edited/Modified Cell
End If
DataGridView.Rows(e.RowIndex).Cells("CellStyleDescriptor").Value = String.Join(",", String)
End Sub
并在 CellFormatting 事件中读取/应用样式,示例:
Private Sub DataGridView_CellFormatting(sender As System.Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView.CellFormatting
If e.RowIndex = -1 Or e.ColumnIndex = -1 Then
Return
End If
Dim styles(25) As String
styles = Split(DataGridView.Rows(e.RowIndex).Cells("CellStyleDescriptor").Value, ",")
Select Case styles(e.ColumnIndex)
Case "E" 'Edited cell
e.CellStyle.BackColor = modifiedStyle.BackColor
e.CellStyle.ForeColor = modifiedStyle.ForeColor
Case "N" 'New cell
e.CellStyle.BackColor = newStyle.BackColor
e.CellStyle.ForeColor = newStyle.ForeColor
End Select
End Sub
我希望这可以帮助别人