Tema: Ayuda combo
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/11/2004, 07:46
kedron
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 12
Antigüedad: 20 años, 11 meses
Puntos: 0
Espero te sirva este codigo, no esta optimizado pero se puede mejorar. en vez de llenar la consulta de un case se puede hacer a traves de otra funcion.
la funcion bindlist recibe el dropdownlist, el nº de la consulta y el mensaje que quieres que aparesca en la primera posicion.
Código HTML:
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not Page.IsPostBack Then
            DropDownList1.DataTextField = "TPREST_NOMBRE"
            DropDownList1.DataValueField = "TPREST_ID"
            BindList(DropDownList1, "1", "seleccione")
        End If
    End Sub
    Public Sub BindList(ByVal cbo As DropDownList, ByVal NumConsulta As String, ByVal valor As String)
        'recibe el objeto DropDownList que se llena al cargar la pagina
        'Numconsulta opcion del case
        'valor = primer registro que se visualiza
        Dim ConnectionString As String = "server=(local);database=MibasedeDatos;UID=sa;PWD=Contraseña"
        Dim myConnection As SqlConnection = New SqlConnection(ConnectionString)
        Dim NomColumna As String
        Select Case NumConsulta
            Case "1"
                NumConsulta = "Select TPREST_ID, TPREST_NOMBRE From TIPO_PRESTACION"
                NomColumna = "TPREST_NOMBRE"
            Case "2"
                NumConsulta = "Select PROY_CODIGO From PROYECTO WHERE PROY_ESTADO <> 'FINALIZADO' ORDER BY PROY_CODIGO"
                NomColumna = "PROY_CODIGO"
        End Select
        Dim myCommand As SqlCommand = New SqlCommand(NumConsulta, myConnection)
        Dim myDataReader As SqlDataReader
        Try
            myConnection.Open()
            myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
            cbo.DataSource = myDataReader
            cbo.DataBind()
        Catch myException As Exception
            Response.Write("Ha ocurrido un error : " & myException.ToString())
            'ShowMessageBox(Me, "Ha ocurrido un error : " & myException.ToString())
        Finally
            If Not myDataReader Is Nothing Then
                myDataReader.Close()
            End If
            cbo.Items.Insert(0, valor)
            cbo.SelectedIndex = 0
        End Try
    End Sub
    Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
        TextBox12.Text = DropDownList1.SelectedItem.Value
        TextBox13.Text = DropDownList1.SelectedItem.Text
    End Sub
puedes recoger
indice a traves del selecteditem.value
valor a traves del selecteditem.text

tabla [TIPO_PRESTACION]
TPREST_ID / TPREST_NOMBRE
1 servicio
2 suministro
etc..

nos vemos
Kedron