ASP.NET - como enlazar dropdowlist

   
Vista:

como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 26/10/2010 23:26:29
que tal busco informacion sobre como enlazar 3 dropdownlist en asp.net 2010
estoy usando programacion oientada a objetos,tengo mi clase de entidads, logica y rules, en mi web tengo los 3 drop pais, departamento y provincia como hago en web para que cuando eliga uno drop me cargue el segundo y de ahi el tercero??
espero algun comentario gracias
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
Imágen de perfil de roger

RE:como enlazar dropdowlist

Publicado por roger (311 intervenciones) el 27/10/2010 05:08:41
sin conocer algo de tu codigo y con el dato que nos das creo que todo seria cuestion de invocar en el evento selectedindex changed del combo el metodo para llenar la lista que depende de él, por ejemplo en el evento selectedindexchanged del drop pais, invocar el metodo para llenar la lista de departamentos.

Saludos
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:como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 27/10/2010 05:47:44
se que tengo que hacerlo con ese evento dentro del drop pero por ejemplo cuando pongo esto
dropdepartamento.datasource=ruledepartamento.getall(droppais.datavalue)
dropdepartamento.databind()

ahi me genera error en la pagina con respecto al datavalue
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
Imágen de perfil de roger

RE:como enlazar dropdowlist

Publicado por roger (311 intervenciones) el 27/10/2010 14:19:55
no conozco ninguna propiedad de un DropDownList que se llame DataValue, hay uno que se llama DataValueField que es una cadena con el nombre del campo del origen de datos de donde se toma el dato a mostrar en el DropDownList, pero no es lo que se debe enviar al metodo ruledepartamento.getall(droppais.datavalue), debe ser el SELECTEDVALUE

dropdepartamento.datasource=ruledepartamento.getall(droppais.SelectedValue)
dropdepartamento.databind()

Asumiendo que en el datavaluefield se encuentra el codigo del pais o el dato que te permite traer los departamentos para ese pais.

saludos
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:como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 27/10/2010 17:56:50
te muestro mi codigo
____________________________________en capa entidades
pais
<Serializable()>
Partial Public Class Pais

Public Property CodPais() As String
Public Property DesPais() As String

Public Sub New()

End Sub

Public Sub New(ByVal vCodPais As String, ByVal vDesPais As String)
_CodPais = vCodPais
_DesPais = vDesPais
End Sub
Private _departamentocollection As DepartamentoList
Public Property departamentocollection() As DepartamentoList
Get
Return _departamentocollection
End Get
Set(ByVal value As DepartamentoList)
_departamentocollection = value
End Set
End Property

Public Class PaisList
Inherits List(Of Pais)

End Class
_______________________________________________
departamento
<Serializable()>
Partial Public Class Departamento

Public Property CodDepart() As String
Public Property CodPais() As String
Public Property DesDepart() As String

Public Sub New()

End Sub

Public Sub New(ByVal vCodDepart As String, ByVal vCodPais As String, ByVal vDesDepart As String)
_CodDepart = vCodDepart
_CodPais = vCodPais
_DesDepart = vDesDepart
End Sub
Private _provinciaCollection As ProvinciaList
Public Property provinciaCollection() As ProvinciaList
Get
Return _provinciaCollection
End Get
Set(ByVal value As ProvinciaList)
_provinciaCollection = value
End Set
End Property
Private _paisEntity As New Pais
Public Property paisEntity() As Pais
Get
Return _paisEntity
End Get
Set(ByVal value As Pais)
_paisEntity = value
End Set
End Property
end class

Public Class DepartamentoList
Inherits List(Of Departamento)

End Class
____________________________________
provincia

<Serializable()>
Partial Public Class Provincia
Public Property CodProv() As String
Public Property DesProv() As String
Public Property CodDepart() As String
Public Sub New()

End Sub

Public Sub New(ByVal vCodProv As String, ByVal vCodDepart As String, ByVal vCodPais As String, ByVal vDesProv As String)
_CodProv = vCodProv
_CodDepart = vCodDepart
_DesProv = vDesProv
End Sub
Private _departamentoEntity As New Departamento
Public Property departamentoEntity() As Departamento
Get
Return _departamentoEntity

End Get
Set(ByVal value As Departamento)
_departamentoEntity = value
End Set
End Property
End Class

Public Class ProvinciaList
Inherits List(Of Provincia)

End Class

-----------------------------------------------capa logica
logica de pais

Imports layer_data
Imports layer_entity
Imports System.Data.Common
Partial Public Class PaisBl
Inherits HelperDB
Public Function GetAll() As PaisList
Try
Dim lista As New PaisList
Using dr As IDataReader = Me.ExecuteReader("usp_Pais_GetAll")
Do While dr.Read
Dim item As New Pais
item.CodPais = CStr(dr("Cod_Pais"))
item.DesPais = CStr(dr("Detalle"))
lista.Add(item)
Loop
End Using 'Llama al dispose automaicamente
Return lista
Catch ex As Exception
Throw ex
End Try
End Function
______________________________________________________
logica de departamento
mports layer_data
Imports layer_entity
Imports System.Data.Common
Partial Public Class DepartamentoBl
Inherits HelperDB
Public Function Getall_2(ByVal codigo As String) As Departamento
Try
Dim item As New Departamento
Dim param() As String = {codigo}
'Dim param(0) As String
'param(0) = codigo
Using dr As IDataReader = Me.ExecuteReader("usp_departamento_Getall_2", param)
If dr.Read Then
item.CodDepart = CStr(dr("Cod_departamento"))
item.DesDepart = CStr(dr("Detalle"))
item.CodPais = CStr(dr("Cod_Pais"))
End If
End Using
Return item
Catch ex As Exception
Throw ex
End Try
End Function
_________________________________________________________
logica de provincia
todavia no lo avanzo pero es similar al de departamento

--------------------------------------------------------------reglas
pais
Imports layer_business
Imports layer_entity
Partial Public Class RulePais
Private Shared obj As New PaisBl
Public Shared Function GetAll() As PaisList
Try
Return obj.GetAll
Catch ex As Exception
Throw ex
End Try
End Function
____________________________________________
departamento
Imports layer_business
Imports layer_entity
Partial Public Class RuleDepartamento
Private Shared obj As New DepartamentoBl
Public Shared Function Getall_2(ByVal codigo As String) As Departamento
Try
Return obj.Getall_2(codigo)
Catch ex As Exception
Throw ex
End Try
End Function
_____________________________________en web
Imports layer_entity
Imports Layer_rule_business
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
ddl_pais.DataSource = RulePais.GetAll
ddl_pais.DataTextField = "DesPais"
ddl_pais.DataValueField = "codpais"
ddl_pais.DataBind()
End If
End Sub

Protected Sub ddl_pais_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddl_pais.SelectedIndexChanged

ddl_departamento.DataSource = RuleDepartamento.Getall_2(ddl_pais.SelectedValue)
ddl_departamento.DataTextField = "DesDepart"
ddl_departamento.DataValueField = "Coddepart"

ddl_departamento.DataBind()

End Sub

le he puesto lo que dijiste el selected data value, datavalue field y viendo mas cosas pero no funciona, no si mi problem esta en las entidades? en las relaciones o en la logica, cuando llamo por parametros, lo vi que lo hicieron de otra manera y si hace la consulta pero de la manera en que lo tengo parece que no, y en la web le puse esa propiedad del drop y nada tamooco, si tienes alguna sugerencia me pasas la voz'¡¡¡¡¡
mi correo es

vazagho si no puedes ver todo el contenido me enias un mail y te lo paso por mail mejor
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
Imágen de perfil de roger

RE:como enlazar dropdowlist

Publicado por roger (311 intervenciones) el 27/10/2010 18:27:08
postea por favor el codigo del evento load de la pagina

saludos
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:como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 27/10/2010 18:40:23
ddl_pais.DataSource = RulePais.GetAll
ddl_pais.DataTextField = "DesPais"
ddl_pais.DataValueField = "codpais"
ddl_pais.DataBind()
de hecho que me carga siempre el drop con un pais ya seleccionado ya eso es cuestion de corregir pero cuando selecciono ahi me arroja el error

y en del drop de pais
ddl_departamento.DataSource = RuleDepartamento.Getall_2(ddl_pais.SelectedValue)
ddl_departamento.DataTextField = "DesDepart"
ddl_departamento.DataValueField = "Coddepart"

ddl_departamento.DataBind()
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
Imágen de perfil de roger

RE:como enlazar dropdowlist

Publicado por roger (311 intervenciones) el 27/10/2010 18:58:33
cada que haces una peticion al servidor, se entra al evento load, entonces siempre se te esta llenando la lista de paises, y luego si entra al evento selectedindex_changed, pero ya en ese momento se ha perdido la seleccion debido a que se volvio a llenar la lista.
Para evitar esto se utiliza la propiedad IsPostBack de la pagina

If (Not Page.IsPostBack) Then
ddl_pais.DataSource = RulePais.GetAll
ddl_pais.DataTextField = "DesPais"
ddl_pais.DataValueField = "codpais"
ddl_pais.DataBind()
End If
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:como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 27/10/2010 19:02:05
lo tengo con el postback en mi load
If Not IsPostBack Then
ddl_pais.DataSource = RulePais.GetAll
ddl_pais.DataTextField = "DesPais"
ddl_pais.DataValueField = "codpais"
ddl_pais.DataBind()
End If
ya me carga, lee el mensaje que te envie, ya me carga pero solo me muestar de toda la lista en el drop el ultimo repetido
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:como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 27/10/2010 18:57:19
que tal pude cambiar algo en la logica del departamento me devuelve la data el segundo combo pero todos me lista con el ultimo nombre del departamento, le hice un punto de interrupcion en la logica y si me lee todos los departamentos, pero cuando lo lista solo me muestra el ultimo en todos los items del drop a que se debe eso?

Public Function Getall_2(ByVal codigo As String) As DepartamentoList
Try
Dim lista As New DepartamentoList
Dim item As New Departamento
Dim param() As String = {codigo}
'Dim param(0) As String
'param(0) = codigo
Using dr As IDataReader = Me.ExecuteReader("usp_departamento_Getall_2", param)
Do While dr.Read
item.CodDepart = CStr(dr("Cod_departamento"))
item.DesDepart = CStr(dr("Detalle"))
item.CodPais = CStr(dr("Cod_Pais"))
lista.Add(item)
Loop
End Using
Return lista
Catch ex As Exception
Throw ex
End Try
End Function
en mi rule de departamnto tambien le uve que cambiar a DepartamentoList
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
Imágen de perfil de roger

RE:como enlazar dropdowlist

Publicado por roger (311 intervenciones) el 27/10/2010 19:13:48
porque al principio estas definiendo un item

Dim item As New Departamento
y sobre este estas cambiando el dato y luego insertandolo a la lista, pero solo a este item, deberias crear un item en cada iteracion

Do While dr.Read
item = New Departamento
item.CodDepart = CStr(dr("Cod_departamento"))
item.DesDepart = CStr(dr("Detalle"))
item.CodPais = CStr(dr("Cod_Pais"))
lista.Add(item)
Loop

Saludos
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:como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 27/10/2010 19:28:01
gracias socio, ya la tenia , pero me falto ese detalle, creo que tengo que repasar mis clases de bucles
estoy armando un sistema pequeño para presentar mi tesis, lo tipico un sistema de ventas, ya arme mi web con los productos a liastar
y sobre mi pedido era en la parte de la intranet pues era para el mantenimiento de personal que lo mismo hare con clientes y proveedores,

otra consulta

como te comento ya estyo armando mi web, tengo mis categorias de prodctos divididos en mujeres, hombres ........., en cada categoria listo los productos correspondientes en un datalist, en la parte de codigo pongo los databound para mostrar los campos que se enlazan con mi consulta, hasta ahi normal, y le agregue un boton para que cuando haga click me mande los datos a una tabla personalizada para agregarlo al carrito de compras, ese proyecto ya lo habia hecho pero con codigo metido en mi aspx, todo estaba mezclado ahi, lo que hacia en ese proyecto era tomar el id del producto en el datalist,y con un store procedure hacia la consulta para llamar los datos con ese parametro, de ahi me lo agregaba a mi tabla, ahora que estoy usando POO ya es algo diferente trate de hacerlo pero no me agrega nda a mi tabla, tendras algun ejemplo?

y bueno con respesto a las transaciones tambien creoque te pedire una ayuda, para hacer el pedido online y la venta, facturacion en la intranet cuando un cliente compre en el local

bueno, gracias socio por la ayuda, ya podre avanzar un poco con mi sistema, pues me tenia aqui en stand by por que no podia avanzar
gracias
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
Imágen de perfil de roger

RE:como enlazar dropdowlist

Publicado por roger (311 intervenciones) el 27/10/2010 20:13:17
ok, con gusto, nos comentas las dudas que vayas teniendo, que en la medida de lo posible te colaboramos en lo que podamos.

saludos
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:como enlazar dropdowlist

Publicado por vazagho (79 intervenciones) el 29/10/2010 06:42:26
que tal amigo otra consulta tengo aqui mi sp para insertar en sql

create PROCEDURE uSp_personal_insert
@codper varCHAR(10) output,@apeper varCHAR(30),@apemat varchar(30),@nomper varchar(40),
@codidocu varchar (5),@numdocu varchar(15),@codsex varchar(1),@fechanac datetime,
@codiestciv varchar(4),@codigradoest varchar(4),@codireli varchar(4),
@codidioma varchar(4),@idiomase varchar(30),@codipais varchar(5),@codidep varchar(5),
@codiprovi varchar(7),@codipostal varchar(30),@dirper char(40),@codicargo varchar(5),
@tele varchar(15),@exten varchar(10),@celular varchar(15),@email varchar(30),
@licencia varchar(20),@codicuenta varchar(5),@codibanco varchar(5),@codimoneda varchar(4),
@numcuenta varchar(25),@fechaingreso datetime,@comentarios varchar(50),@codiestado varchar(5)
AS
declare @Cod_Personals char(10)
declare @cod char(11)
declare @max int
select @cod=max(SUBSTRING(Cod_Personal,5,10) + 1) from Personal
select @max=max(len(SUBSTRING(Cod_Personal,5,10) + 1)) from Personal
select @Cod_Personals=max(left(Cod_Personal,len(Cod_Personal)- @max)) + @cod from Personal
INSERT INTO personal VALUES(@Cod_Personals,@apeper,@apemat,@nomper,@codidocu,@numdocu,@codsex,@fechanac,@codiestciv,@codigradoest,@codireli,@codidioma,@idiomase,@codipais,@codidep,@codiprovi,@codipostal,
@dirper,@codicargo,@tele,@exten,@celular,@email,@licencia,@codicuenta,@codibanco,@codimoneda,@numcuenta,@fechaingreso,
@comentarios,@codiestado)
select @CodPer=Cod_Personal from Personal where Cod_Personal=@Cod_Personals
go

declare @cod char(10)
exec uSp_personal_insert @Cod output ,'ccffff','martinez','miguel','doc01','40303678','1','02-02-1979','EC01','GI04','Re02','Id03','Ingles','Pa008','De014','Pro0008','Lima1','calle las camelias 185','CAR03','5346248','1245','9999999999','vazagho@hotmail.com','142578452','Cu003','Ba003','Mo06','458745874587','02-02-2010','su licencia de conducir es a2','est01'

mi pregunta es como represento ese output de codper en mi capa de la logica para insertar

asi tengo mi clase

Public Sub Insert(ByVal item As Personal)
Try
Dim param() As String = {item.CodPer, item.CodDocu, item.CodSex, item.CodCargo, item.CodEstado, item.CodEstCivil, item.CodGrado,
item.CodReligion, item.CodIdioma, item.CodPais, item.CodDepart, item.CodProv,
item.codtipocuenta, item.codbanco, item.codmoneda, item.numcuenta, item.NomPer, item.ApePPer, item.ApeMPer, item.NumDocu, item.FecNacPer, item.IdiomaSec,
item.DirPer, item.CodPostalPer, item.TelPer, item.extension, item.Tel2Per, item.EmailPer, item.licenciaconducir,
item.FecNacIngresoPer, item.Comentario}
Me.ExecuteNomQuery("usp_Personal_Insert", param)
Catch ex As Exception
Throw ex
End Try
End Sub

me faltan algunos campos, eso no es el problema sino como te digo,¿como hago aqui con el output ya que el codigo se autogenera en mi sp ?

¿¡¡y en mi capa de reglas tambien cambia en algo???
Public Shared Sub Insert(ByVal item As Personal)
Try
obj.Insert(item)
Catch ex As Exception
Throw ex
End Try
End Sub

gracias
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
Imágen de perfil de roger

RE:como enlazar dropdowlist

Publicado por roger (311 intervenciones) el 29/10/2010 14:35:16
segun veo utilizas enterprise library, entonces debes usar el metodo AddOutputParameter como se ve en este link, http://www.devx.com/dotnet/Article/30910/0/page/4

nota: puedes abrir otro post para otras preguntas, este ya se creció mucho :P
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