【发布时间】:2014-01-02 19:32:10
【问题描述】:
我有一个带有几个组合框列的 DGV。这些列绑定到基本上是数据库中查找项的对象。我想为我的用户提供一个空白选项,以便在适用的情况下将这些查找项设置为 NULL。我尝试了各种将 Null 项添加到列表以允许用户选择空值的方法,但它似乎不起作用。
有没有一种最好的方法可以让我将列表绑定到控件,并允许用户输入空值而无需按 Ctrl+0?
Public Class RootItem
Public Overridable Property Lookup
Public Overridable Property Type as String
Public Overridable Property Active as Boolean
End Class
Public Class LookupItem
Public Overridable Property ID As Integer = -1
Public Overridable Property Abbreviation As String = ""
Public Overridable Property Name As String = ""
Public Overridable Property Description As String = ""
Public Overrides Function ToString() As String
Return Abbreviation
End Function
Public Overridable ReadOnly Property Self
Get
Return Me
End Get
End Property
End Class
' My databinding
' ...
private rootItems as IList(of RootItem) = session.QueryOver(of RootItem).List
Private lookups As IList(Of LookupItem) = session.QueryOver(Of LookupItem).List
With LookupItemColumn
.DataSource = lookupItems
.DataPropertyName = PropUtil.GetName(Of RootItem)(Function(x) x.LookupItem)
.DisplayMember = PropUtil.GetName(Of LookupItem)(Function(x) x.Abbreviation)
.ValueMember = PropUtil.GetName(Of LookupItem)(Function(x) x.Self)
End With
myDgv.DataSource = New SortableBindingList(Of RootItem)(rootItems)
【问题讨论】:
-
那么在下拉源中添加“空项”不是一种选择?
-
我已经这样做了,但是绑定无法正常工作,并且下拉列表中没有显示任何项目。
-
由于您的模型不允许 null,我能想到的唯一方法可能是创建一个自定义
DataGridViewComboBoxColumn。 -
我的模型如何禁止空值?既然我绑定的属性是 Nullable Object(一个类),难道不应该允许吗?
-
我假设您使用的是数据表。也许你可以提供一些代码? :)
标签: .net vb.net nhibernate data-binding