Очистить текст из 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
Другие вопросы по тегам