Foros del Web » Programación para mayores de 30 ;) » .NET »

Combobox dependientes con stored Procedure

Estas en el tema de Combobox dependientes con stored Procedure en el foro de .NET en Foros del Web. Saludos comunidad Tengo dos combobox cbo.Paises, cboCiudades necesito cargar las ciudades en el combo ciudades cuando se haya selecionado un pais en el combo paises. ...
  #1 (permalink)  
Antiguo 16/04/2016, 23:32
 
Fecha de Ingreso: abril-2016
Ubicación: Costa Rica
Mensajes: 2
Antigüedad: 8 años, 7 meses
Puntos: 0
Combobox dependientes con stored Procedure

Saludos comunidad
Tengo dos combobox cbo.Paises, cboCiudades
necesito cargar las ciudades en el combo ciudades cuando se haya selecionado un pais en el combo paises. Estoy utilizando 3 capas y un store procedure para cargar los paises es el siguiente:

CREATE PROCEDURE SP_ListarPaises
AS
SELECT *
FROM tPaises
ORDER BY tPaises.Nombre asc
GO

resultado:

Id_Pais Nombre

1 Alemania

2 Belgica

-------------------------------

esta es la funcion que realize en capadatos para agregar el storedProcedure:

Public Function ListaPaises() As DataTable
Try

cn.ConnectionString = CadenaConexion()
Dim Da As New SqlDataAdapter("SP_ListarPaises", cn)
Da.SelectCommand.CommandType = CommandType.StoredProcedure
Dim datos As New DataTable
Da.Fill(datos)
Da = Nothing
Return datos
Catch ex As Exception

MsgBox("Error" & ex.Message, MsgBoxStyle.Critical, "Informe de Error")
If cn.State = ConnectionState.Open Then cn.Close()
cn.Dispose()
Return Nothing
Finally
End Try

End Function

-------------------------------------
esta es el procedimiento que instancio en capa presentacion para llenar el combo:


Public Sub llenarComboPaises()

Dim dt As New DataTable
Dim func As New CapadatosFunciones

Try

dt = func.ListarPaises

Dim dr As DataRow = dt.NewRow()
dr("Nombre") = "Seleccione un Pais..."
dr("Id_Pais") = 0
dt.Rows.InsertAt(dr, 0)

cboPaises.SelectedValue = 0
cboPaises.DisplayMember = "Nombre"
cboPaises.ValueMember = "Id_Pais"
cboPaises.DataSource = dt

Catch ex As Exception
MsgBox(ex.Message, "No se cargaron los Paises")
End Try

End Sub


Hasta aqui me cargan los paises, ahora lo que quisiera es que al seleccionar un pais en el combo paises se me carguen las ciudades respectivas de ese pais en el combo ciudades.

hice un stored procedure para obtener las ciudades por medio de un parametro ese parametro es el id del pais, es el siguiente:

CREATE PROCEDURE SP_ListarCiudades

@parametroPais Int
AS

SELECT tCiudad.Id_Ciudad, tCiudad.Nombre
FROM tCiudad
WHERE tCiudad.Id_Pais = @parametroPais


ORDER BY tCiudad.Nombre asc
GO

Execute SP_ListarCiudades '22' ( '22 representa por ejemplo al id del pais = Usa)

---------------------------------------------

Resultado:

Id_Ciudad Nombre

1 Dallas

2 Florida

3 Whashington

---------------------------------------


como se haria ya en el codigo para hacer funcionar este stored procedure y que reciba como parametro el selectvalue del combo paises para que llene el combo ciudades . gracias
  #2 (permalink)  
Antiguo 17/04/2016, 18:50
 
Fecha de Ingreso: abril-2016
Mensajes: 3
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Combobox dependientes con stored Procedure

Hola! Lo que tenes que hacer es usar el evento selectedindexchanged del combo Paises, y ahí tomar el "SelectedValue" del combo Paises. Una vez que tenes el id del pais, vas a buscar la lista de ciudades de ese país:

Public Function ListaCiudades(PaisId As Object) As DataTable
Try

cn.ConnectionString = CadenaConexion()
Dim Da As New SqlDataAdapter("SP_ListarCiudades", cn)
Da.SelectCommand.CommandType = CommandType.StoredProcedure
Da.SelectCommand.Parameters.AddWithValue("@paramet roPais",PaisId)
Dim datos As New DataTable
Da.Fill(datos)
Da = Nothing
Return datos
Catch ex As Exception

MsgBox("Error" & ex.Message, MsgBoxStyle.Critical, "Informe de Error")
If cn.State = ConnectionState.Open Then cn.Close()
cn.Dispose()
Return Nothing
Finally
End Try
  #3 (permalink)  
Antiguo 17/04/2016, 19:50
 
Fecha de Ingreso: abril-2016
Ubicación: Costa Rica
Mensajes: 2
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Combobox dependientes con stored Procedure

Saludos tinchoz, comprendo tu respuesta, pero no se como tomar el selectvalue en el evento selectedindexchanged del combo paises, que habria que instanciar en ese evento? logre colocar en el evento este codigo pero me da error "Error el procedimiento o la funcion 'SP_ListarCiudades esperaba el parametro '@parametropais', que no se ha especificado." y no se si es como dices.

Dim dt As New DataTable
Dim func As New CapaDatosFunciones

dt = func.ListarCiudades(cboPaises.SelectedValue)

Dim dr As DataRow = dt.NewRow()
dr("Nombre") = "Seleccione una Ciudad..."
dr("Id_Ciudad") = 0
dt.Rows.InsertAt(dr, 0)

cboCiudades.SelectedValue = 0
cboCiudades.DisplayMember = "Nombre"
cboCiudades.ValueMember = "Id_Ciudad"
cboCiudades.DataSource = dt

Última edición por foweb; 17/04/2016 a las 20:10
  #4 (permalink)  
Antiguo 20/04/2016, 11:10
 
Fecha de Ingreso: agosto-2010
Mensajes: 126
Antigüedad: 14 años, 3 meses
Puntos: 9
Respuesta: Combobox dependientes con stored Procedure

Esto es C# pero puedes adecuarlo a VB.
Código ASP:
Ver original
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (!IsPostBack)
  4.             {
  5.                 CargarComboPaises();
  6.  
  7.                 ddlCiudades.Items.Insert(0, new ListItem("Seleccione..", "0"));
  8.             }
  9.         }
  10.        
  11. private void CargarComboPaises()
  12.         {
  13.             DataTable dt = new DataTable();
  14.             Paises p = new Paises();
  15.  
  16.             dt = p.Paises_Listar();
  17.             ddlPaises.DataSource = dt;
  18.             ddlPaises.DataValueField = "Id";
  19.             ddlPaises.DataTextField = "Paises";
  20.             ddlPaises.DataBind();
  21.  
  22.             ddlPaises.Items.Insert(0, new ListItem("Seleccione..", "0"));
  23.         }
  24.  
  25.         protected void ddlPaises_OnSelectedIndexChanged(object sender, EventArgs e)
  26.         {
  27.             if (ddlPaises.SelectedValue != "0")
  28.             {
  29.                 DataTable dt = new DataTable();
  30.                 Ciudades c = new Ciudades();
  31.  
  32.                 dt = cd.Ciudades_Listar_PorPaises(Tools.ToInteger(ddlPaises.SelectedValue));
  33.  
  34.                 ddlCiudades.DataSource = dt;
  35.                 ddlCiudades.DataValueField = "Id";
  36.                 ddlCiudades.DataTextField = "Ciudad";
  37.                 ddlCiudades.DataBind();
  38.             }
  39.             else
  40.             {
  41.                 ddlCiudades.Items.Clear();
  42.                 ddlCiudades.Items.Insert(0, new ListItem("Seleccione..", ""));
  43.             }
  44.         }
Saludos,

Última edición por uagrm; 20/04/2016 a las 11:15

Etiquetas: combobox, datatable, dependientes, procedure, stored
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:39.