none
MOSTRAR VALOR DE UN DROPDOWNLIST EN UN TEXT BOX

    Pregunta

  • Amigos quiero hacerles una consulta.

    Ejemplo: estas tablas las tengo pero en este caso le pondre algunos campos solamente ya que son mas grandes las tablas y asi mi consulta sea mas facil para la explicacion.

    Tengo estas dos tablas:

    CREATE TABLE empleados
    (
      idEmpleado INT identity(1,1) NOT NULL,
      rut VARCHAR(10) NOT NULL,
      nombre VARCHAR(10) NOT NULL,
      PRIMARY KEY(idEmpleado)
    )
    
    
    CREATE TABLE venta
    (
      idVenta INT identity(1,1) NOT NULL,
      cantidaProducto INT NOT NULL,
      precio INT NOT NULL
      empleados_idEmpleado INT NOT NULL,
      nombre VARCHAR(10) NOT NULL,
      PRIMARY KEY(idVenta),
      FOREIGN KEY(empleados_idEmpleado) REFERENCES empleados(idEmpleado)
    )
    


    como se dan cuenta en mi tabla ventas recibe el ID del empleado como clave foranea.

    En mi formulario en este caso en el .aspx tengo un DropDownList que me carga a mi empleado de la siguiente manera.

      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
    Me.cargarEmpleados()
    End If
    End Sub

    Protected Sub cboEmpleado_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cboEmpleado.SelectedIndexChanged
    Me.txtEmpleado.Text = cboEmpleado.SelectedValue
    Dim empleadoId As Integer = Convert.ToInt32(cboEmpleado.SelectedValue)
    End Sub

    'METODO PARA CARGAR LOS EMPLEADOS EN EL DROPDOWNLIST.
    Private Sub cargarEmpleados() Dim neg As New NegocioEmpleado Dim lista As List(Of Empleado) = neg.ListadoEmpleado() Me.cboEmpleado.DataValueField = "idEmpleado" Me.cboEmpleado.DataTextField = "nombre" Me.cboEmpleado.DataSource = lista Me.cboEmpleado.DataBind() If cboEmpleado.Items.Count <> 0 Then Dim empleadoId As Integer = Convert.ToInt32(cboEmpleado.SelectedValue) End If End Sub


    ademas en  mi formulario tengo un TEXTBOX que cuando se selecciona el nombre del empleado en el DROPDOWNLIST me muestra el Id del empleado hasta aca todo bien me resulta a la perfeccion.

    EL PROBLEMA.

    No quiero que me muestre el Id del empleado porque ese id es autonumerico y para la persona que esta utilizando el formulario le interesa saber el RUT del empleado no el ID.

    yo perfectamente puedo cambiar en el

    Me.cboEmpleado.DataValueField = "idEmpleado"
    

    por

    Me.cboEmpleado.DataValueField = "rut"
    

    y me funciona perfectamente.

    pero al momento de guardar no me sirve porque en mi tabla ventas esta con el idEmpleado en donde hago referencia y no por el RUT ademas que idEmpleado es INT y RUT es VARCHAR

    entonces lo que necesito es guardar el ID de mi empleado pero que se me muestre el RUT en el TEXTBOX no necesito guardar el RUT pero si que en EL TEXTBOX se visualize.

     

    SE PUEDE HACER ESO???? Y SI SE PUDIERA COMO TENDRIA QUE HACERLO. MUCHAS GRACIAS POR SU TIEMPO.

     

    LES DESEO UNAS MUY LINDAS FIESTAS A TODOS EN EL FORO QUE SEA UNA AGRADABLE NAVIDAD Y UN PROSPERO AÑO QUE LO DISFRUTEN CON SUS SERES QUERIDOS.

     

    GRACIAS.

     





    • Editado JonaGuitar viernes, 23 de diciembre de 2011 16:07
    viernes, 23 de diciembre de 2011 16:00

Respuestas

  • hola

    pero no deberias tomar el id y realizar una query a la tabla para recuperar la info del empleado ?

    o sea deja la definicion

    Me.cboEmpleado.DataValueField = "idEmpleado"

    y luego haces

    Protected Sub cboEmpleado_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cboEmpleado.SelectedIndexChanged
       
       Dim empleadoId As Integer = Convert.ToInt32(cboEmpleado.SelectedValue)
       
    	Using conexion As New SqlConnection("connection string")
    		conexion.Open()
    
    		Dim query As String = "SELECT rut FROM Empleados WHERE id = @id"
    		Dim cmd As New SqlCommand(query, conexion)
    		cmd.Parameters.AddWithValue("@id", empleadoId)
    
    		txtRut.Text = Convert.ToString(cmd.ExecuteScalar())
    
    	End Using
    	
    End Sub
    

    como veras consultas a la db para tomar el rut que quieres mostrar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta JonaGuitar sábado, 24 de diciembre de 2011 5:15
    viernes, 23 de diciembre de 2011 16:13

Todas las respuestas

  • hola

    pero no deberias tomar el id y realizar una query a la tabla para recuperar la info del empleado ?

    o sea deja la definicion

    Me.cboEmpleado.DataValueField = "idEmpleado"

    y luego haces

    Protected Sub cboEmpleado_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cboEmpleado.SelectedIndexChanged
       
       Dim empleadoId As Integer = Convert.ToInt32(cboEmpleado.SelectedValue)
       
    	Using conexion As New SqlConnection("connection string")
    		conexion.Open()
    
    		Dim query As String = "SELECT rut FROM Empleados WHERE id = @id"
    		Dim cmd As New SqlCommand(query, conexion)
    		cmd.Parameters.AddWithValue("@id", empleadoId)
    
    		txtRut.Text = Convert.ToString(cmd.ExecuteScalar())
    
    	End Using
    	
    End Sub
    

    como veras consultas a la db para tomar el rut que quieres mostrar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta JonaGuitar sábado, 24 de diciembre de 2011 5:15
    viernes, 23 de diciembre de 2011 16:13
  • GRACIAS LEANDRO POR TU AYUDA FUE MUY ESCENCIAL APRENDI ALGO NUEVO SE AGRADE MUY LINDAS FIESTAS PARA YI.
    sábado, 24 de diciembre de 2011 5:16