NET Designtime fonte de dados (para a caixa de combinação)
-
21-08-2019 - |
Pergunta
Eu estou tentando criar um ObjectDataSource que eu posso usar para vincular a um BindingSource, que por sua vez deve ser ligado a uma caixa de combinação.
Eu criei uma classe simples e uma lista simples para esta classe (veja abaixo)
- A classe lista do Times não está aparecendo na minha caixa de ferramentas, por isso não pode arrastá-lo para a forma para que eu possa selecioná-la como fonte de dados para um BindingSource.
- A segunda opção é criar uma nova fonte de dados do projeto (ObjectDataSource). Aqui é convidado a 'selecionar o objeto de seu desejo de se ligar ao'. Eu adicionei a / variável amigo pública / privada para Form1 que instancia a classe Times. No entanto, esta variável não mostra. O único objeto que aparece na minha namespace projeto é Form1.
O que eu estou ausente?
Public Class Time
Private _timeValue As String
Private _timeDisplay As String
Public Sub New(ByVal Value As String, ByVal Display As String)
Me._timeDisplay = Display
Me._timeValue = Value
End Sub
Public Property Display() As String
Get
Return Me._timeDisplay
End Get
Set(ByVal value As String)
Me._timeDisplay = value
End Set
End Property
Public Property Value() As String
Get
Return Me._timeValue
End Get
Set(ByVal value As String)
Me._timeValue = value
End Set
End Property
End Class
Public Class Times : Inherits List(Of Time)
Public Sub New()
End Sub
End Class
Solução 2
Posso adicionar o atributo System.ComponentModel.DataObject
ao class
. No entanto eu não posso adicionar um System.ComponentModel.DataObjectMethod
ao meu Display/Value property
. Quando eu mudá-los para Functions
eu recebo o seguinte erro:
'Resolução de sobrecarga falhou porque não New()
acessível aceita este número de argumentos'
'This works
<System.ComponentModel.DataObject()> _
Public Class Time
Private _timeValue As String
Private _timeDisplay As String
Public Sub New()
End Sub
Public Sub New(ByVal Value As String, ByVal Display As String)
Me._timeDisplay = Display
Me._timeValue = Value
End Sub
'This doesn't work
<System.ComponentModel.DataObjectMethod()> _
Public Function getDisplay() As String
Return Me._timeDisplay
End Function
'This doesn't work
<System.ComponentModel.DataObjectMethod()> _
Public Function getValue() As String
Return Me._timeValue
End Function
End Class
Outras dicas
Para melhorar a experiência com ObjectDataSource
, considere marcando seus tipos de dados com [DataObject]
. Além disso, há um atributo [DataObjectMethod]
que define as operações possíveis.