【问题标题】:Devexpress (10.2) GridControl isn't letting null value in columnDevexpress (10.2) GridControl 不允许在列中出现空值
【发布时间】:2011-07-21 17:44:53
【问题描述】:

我在 Visual Studio 2008 中使用 VB.net。我目前有 GridControl,其中一列从数据库中获取实数。每当我尝试删除该值时,我都会得到一个红色的“X”,表示输入字符串的格式不正确,即使我知道它可以显示 null,因为下面的行为该列获取了一个 null 值。见下图。

我尝试通过将列的 ColumnEdit 设置为 textedit 然后将其 allowNullInput 设置为 True 来解决此问题。还是一样的问题

【问题讨论】:

  • 您确定该值实际上为空吗?因为正如您所说,它可以在下面的列中做到。
  • @Msarchet。我刚刚在 cellvaluechange 中添加,将值设置为空。同样的问题。

标签: vb.net visual-studio-2008 devexpress


【解决方案1】:

处理网格列的ParseEditValue事件。

Imports DevExpress.XtraEditors.Repository

Public Class Form1
  Public WithEvents Edit As RepositoryItemTextEdit

  Public Sub Form1()
      Edit = GridView1.Columns("myColumn").ColumnEdit
  End Sub

  Private Sub Edit_ParseEditValue(sender As Object, e As DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs) Handles Edit.ParseEditValue
    If IsNothing(e.Value) Or (Not (e.Value Is Nothing) And String.IsNullOrEmpty(e.Value.ToString)) Then
        e.Value = DBNull.Value
    End If
  End Sub
End Class

【讨论】:

  • 您知道在 VB.Net 中执行此操作的方法吗?我的 GridView.Columns["fieldName"].ColumnEdit 不包含 ParseEditValue 并且我在属性中看不到此事件。
  • @Kyra - 尝试将上述转换为 VB.Net。我是VB.Net的菜鸟,所以提前道歉!
  • 谢谢! :D 工作得很好。唯一的问题是您的 IF 语句应该是:If IsNothing(e.Value) Or (Not (e.Value Is Nothing) And String.IsNullOrEmpty(e.Value.ToString)) Then,因为您不能使用 '=' 或 '' 与任何内容进行比较。非常感谢:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多