Очистить текст из UltraGridCell, когда данные не действительны
Я пытаюсь добавить подтверждение в мой UltraGrid
где пользователь вводит значение в одну ячейку, но не устанавливает значение CheckBoxColumn
в True
, MessageBox
отображается и текст / значение в этой ячейке очищается, снова оставляя пустую ячейку.
То, что я до сих пор это:
Try
If e.Cell.Column.Key = "Commission_Rate" Then
If e.Cell.Row.Cells("Commission_Override").Value = False Then
MessageBox.Show("Before entering a custom rate, please set 'Commission Override' to True", "Override Commission", MessageBoxButtons.OK)
e.Cell.Value = ""
End If
End If
Catch
End Try
MessageBox
Линия работает нормально, но затем отображается другая
"Невозможно преобразовать из: System.String в System.Decimal"
Ячейка представляет собой десятичную ячейку, поскольку она предназначена для ввода денежного значения, поэтому как мне установить значение "" для Decimal
?
1 ответ
Значение, которое вы получаете из базы данных, если значение не указано, - DBNull.Value. Так что если вам нужна ячейка, чтобы ничего не показывать, вам нужно установить такое же значение, как это:
e.Cell.Value = DBNull.Value
Это заставит сетку показывать пустую ячейку
[Редактировать] Используйте этот код в событии BeforeEnterEditMode, чтобы запретить пользователю редактировать ячейку, когда соответствующая ячейка флажка не отмечена:
Private Sub UltraGrid1_BeforeEnterEditMode(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles UltraGrid1.BeforeEnterEditMode
Dim cell As UltraGridCell = Me.UltraGrid1.ActiveCell
If cell Is Nothing Then
Return
End If
Try
If cell.Column.Key = "Commission_Rate" Then
If cell.Row.Cells("Commission_Override").Value = False Then
MessageBox.Show("Before entering a custom rate, please set 'Commission Override' to True", "Override Commission", MessageBoxButtons.OK)
e.Cancel = True
End If
End If
Catch
End Try
End Sub