Visual Basic.NET - ComboBox desde DLL

 
Vista:

ComboBox desde DLL

Publicado por Mario (5 intervenciones) el 17/05/2008 17:07:08
Tengo un problema.
He querido llenar un combobox desde un DLL que he construido pero no me devuelve nada.
Sin embargo si cargo el combobox en mi aplicación con Datasource=Tabla si lo llena.
Ahora en el DLL quiero instanciar un combobox, llenarlo y devolverlo como combobox.
La función devuelve un combobox pero vacío.
¿Tendrían algún ejemplo de como hacerlo?
Se los agradezco de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ComboBox desde DLL

Publicado por Harold V. (411 intervenciones) el 18/05/2008 15:21:31
Lo que puedes hacer es devolver una lista, dataset o datatable con una funcion en tu dll, haces la referencia a esa clase en tu proyecto y cargas el combo con el valor devuelto por la funcion..........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ComboBox desde DLL

Publicado por Mario (5 intervenciones) el 19/05/2008 04:34:19
Gracias por responder Harold.
Ya había logrado devolver un datatable y funcionada, pero quería devolver un combobox.
Instancié el combobox, lo cargaba pero no devolvía nada.
Con el depurador me dí cuenta que el datasource no le cragaba nada.
Tuve que crear un formulario, crear un control combobox y dentro de esa clase crear una función. Ahí si me reconocía el datasource.

Envío mi solución. La aplicación se llama CBUsuariosConAcceso.DLL

Tiene una clase Propìedades y otra FormularioDeControles.
Con propiedades le paso la empresa y la conexion.
En FormularioDeControles hay una función que devuelve el combobox.

Al final está como llamo la clase y cargo mi combobox.

'////////////////////////////////////////////////////////////////////////////
Imports System.Data.SqlClient

Public Class Propiedades

Public Shared CodEmpresa As Integer
Public Shared laConexion As SqlClient.SqlConnection

Public WriteOnly Property Empresa() As Integer
' la parte Set es la que se usa al asignar el nuevo valor
Set(ByVal Value As Integer)
CodEmpresa = Value
End Set
End Property

Public WriteOnly Property Conexion() As SqlClient.SqlConnection
Set(ByVal Value As SqlClient.SqlConnection)
laConexion = Value
End Set
End Property

End Class
'////////////////////////////////////////////////////////////////////////////

'////////////////////////////////////////////////////////////////////////////
Public Class FormularioDeControles

Public StrSql As String

Function Cargando() As ComboBox

''***************** POPULATE COMBOBOX *****************
Dim objDA As SqlClient.SqlDataAdapter
Dim objDS As New Data.DataSet

StrSql = "select CodigoDeResponsable,NombreDeResponsable " & _
"from MN_TABLA_DE_RESPONSABLES_Y_EJECUTORES " & _
"where Empresa = " & Propiedades.CodEmpresa & " AND (AccesoAlSistema = 1) " & _
"order by NombreDeResponsable "

objDA = New SqlClient.SqlDataAdapter(StrSql, Propiedades.laConexion)
objDA.Fill(objDS)
'*****************************************************************

ComboTrabajo.DisplayMember = "NombreDeResponsable"
ComboTrabajo.ValueMember = "CodigoDeResponsable"
ComboTrabajo.DataSource = objDS.Tables(0)

Return ComboTrabajo

End Function

End Class
'////////////////////////////////////////////////////////////////////////////


Llamar la clase y llenar el combobox
'//////////////////////////////////////////////////////////////////////
Dim PropTablaUsuarios As New CBUsuariosConAcceso.Propiedades
PropTablaUsuarios.Empresa = CodigoEmpresa
PropTablaUsuarios.Conexion = StrConn

Dim TablaUsers As New CBUsuariosConAcceso.FormularioDeControles
ComboUsuario.DisplayMember = TablaUsers.Cargando.DisplayMember
ComboUsuario.ValueMember = TablaUsers.Cargando.ValueMember
ComboUsuario.DataSource = TablaUsers.Cargando.DataSource
'//////////////////////////////////////////////////////////////////////
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar