数据无效时清除 UltraGridCell 中的文本
Clear Text from UltraGridCell when Data is not Valid
我正在尝试向我的 UltraGrid
添加一些验证,如果用户在一个单元格中键入一个值,但没有将 CheckBoxColumn
的值设置为 True
,将显示 MessageBox
,并清除该单元格中的 text/value,再次留下一个空白单元格。
我目前拥有的是:
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
行工作正常,但是,然后显示另一行说
"Unable to convert from: System.String to System.Decimal"
该单元格是一个小数单元格,因为它是用来输入货币值的,所以如何将值设置为“” for Decimal
?
未提供任何值时,您从数据库中获取的值为 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
我正在尝试向我的 UltraGrid
添加一些验证,如果用户在一个单元格中键入一个值,但没有将 CheckBoxColumn
的值设置为 True
,将显示 MessageBox
,并清除该单元格中的 text/value,再次留下一个空白单元格。
我目前拥有的是:
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
行工作正常,但是,然后显示另一行说
"Unable to convert from: System.String to System.Decimal"
该单元格是一个小数单元格,因为它是用来输入货币值的,所以如何将值设置为“” for Decimal
?
未提供任何值时,您从数据库中获取的值为 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