У меня есть DataGridView только для чтения, привязанный к источнику привязки. В форме есть и другие элементы управления, которые обновляют DataGridViewCells — они привязаны к источнику привязки. Мне нужно изменить стили datagridviewCell на основе того, что такое DataViewRowState источника - .Current мне не помогает - мне нужно отследить ячейку с исходным значением - покрасить ячейку в нормальный цвет, если она изменена, покрасьте ее в синий цвет . Я знаю, что могу получить DataRowViewState, который дает мне версию, которую я получаю, но она всегда возвращается в актуальном состоянии (так как это значение по умолчанию), и мне нужен текущий - я просто хочу знать, отличается ли он от оригинала или нет для именно этот столбец. Поскольку в моем редактировании источника привязки у меня уже есть строка, похоже, нет простого метода или свойства, которое говорит, что эта строка является исходной или измененной. Нужно ли мне запускать выборку с использованием состояния фильтра в таблице, чтобы получить мою строку и посмотреть, получу ли я результаты, а затем, если это так, изменить ячейку, чтобы сделать это?
Соответствующий код: - Я знаю, что это в VB.net, но если у вас есть пример С#, это нормально, мне все равно, какой - код .net - это код, и я могу его преобразовать.
Private Sub UpdateCellValue(columnName As String, textValue As String)
If dgvBayList.SelectedRows.Count > 0 Then
Dim crow As DataGridViewRow = dgvBayList.SelectedRows(0)
Dim drv As DataRowView = DirectCast(bsBins.Current, DataRowView)
If crow.Cells(columnName).Value = textValue Then
Exit Sub
End If
drv.BeginEdit()
drv.Row.BeginEdit()
drv.Row.SetField(Of String)(columnName, textValue)
' My Problem here is of course it is always original,
' the row states of the Row always show Modified.
' This happens when the binding source gets filled and bound to datagridview.
Select Case drv.RowVersion
Case DataRowVersion.Original
Dim val As String = drv.Row(0).ToString()
Exit Select
Case DataRowVersion.Proposed
Dim val As String = drv.Row(0).ToString()
Exit Select
Case DataRowVersion.Current
Dim val As String = drv.Row(0).ToString()
Exit Select
Case DataRowVersion.Default
Dim val As String = drv.Row(0).ToString()
Exit Select
End Select
crow.Cells(columnName).Value = textValue
drv.Row.EndEdit()
drv.EndEdit()
Dim dt As DataTable = sortingDataSet.bins
End If
End Sub