none
Obtener valor y realizar accion Drop Down List RRS feed

  • Pregunta

  • Hola gente de la comunidad, tengo la siguiente duda, como puedo obtener el valor de un ddl

    para posterior a ello realizar una accion ?

    parte del codigo es:

    ddlCurso.DataSource = Enum.GetValues(typeof(Cursos));

    ddlCurso.DataBind();

     protected void ddlCurso_SelectedIndexChanged(object sender, EventArgs e)
            {
                Prueba();
            }

     public void Prueba()
            {

    if (ddlCurso.SelectedIndex == 0) {

    //accion

    }

    if (ddlCurso.SelectedIndex == 1) {

    //accion

    }

    if (ddlCurso.SelectedIndex == 2) {

    //accion

    }//etc

    asi tengo. esta mal?

    el ddl lo cargo con enumeraciones asi:

    primero = 0,

    segundo = 1,

    tercero = 2,

    Saludos

    pd: esta en C# todo
    • Editado Feriks domingo, 13 de septiembre de 2015 1:46
    domingo, 13 de septiembre de 2015 1:45

Respuestas

  • Así te va a funcionar, aunque tienes que tener en cuenta que el valor de dllCurso.SelectedIndex es el índice de orden del elemento seleccionado en el DropDownList, no el elemento en sí.

    Es decir si el valor ddlCurso.SelectedIndex=0 se corresponderá con el curso primero si éste el primer elemento del DropDownList, si cambias de orden los elementos cambiarán sus valores.

    En estos casos creo que es más limpio (y menos propenso a errores) utilizar el SelectedValue, que sí te devuelve el valor seleccionado:

            public void Prueba()
            {
                Cursos cursoSeleccionado;
                if (Enum.TryParse(ddlCurso.SelectedValue, out cursoSeleccionado))
                {
                    switch (cursoSeleccionado)
                    {
                        case Cursos.primero:
                            // TODO: acción
                            break;
                        case Cursos.segundo:
                            // TODO: acción
                            break;
                        case Cursos.tercero:
                            // TODO: acción
                            break;
                    }
                }
            }
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 13 de septiembre de 2015 5:55
  • hola

    algo que noto es que no defines el DataValueField, por lo que el SelectedValue no te va a funcionar

    vas a tener que usar

    ddlCurso.DataTextField="Text"; ddlCurso.DataValueField="Value";

    ddlCurso.DataSource = Enum.GetValues(typeof(Cursos));

    ddlCurso.DataBind();


    entonces si el SelectedValue devolvera el valor dentro del enum correspondiente a la opcion seleccionada

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 13 de septiembre de 2015 15:35

Todas las respuestas

  • Así te va a funcionar, aunque tienes que tener en cuenta que el valor de dllCurso.SelectedIndex es el índice de orden del elemento seleccionado en el DropDownList, no el elemento en sí.

    Es decir si el valor ddlCurso.SelectedIndex=0 se corresponderá con el curso primero si éste el primer elemento del DropDownList, si cambias de orden los elementos cambiarán sus valores.

    En estos casos creo que es más limpio (y menos propenso a errores) utilizar el SelectedValue, que sí te devuelve el valor seleccionado:

            public void Prueba()
            {
                Cursos cursoSeleccionado;
                if (Enum.TryParse(ddlCurso.SelectedValue, out cursoSeleccionado))
                {
                    switch (cursoSeleccionado)
                    {
                        case Cursos.primero:
                            // TODO: acción
                            break;
                        case Cursos.segundo:
                            // TODO: acción
                            break;
                        case Cursos.tercero:
                            // TODO: acción
                            break;
                    }
                }
            }
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 13 de septiembre de 2015 5:55
  • hola

    algo que noto es que no defines el DataValueField, por lo que el SelectedValue no te va a funcionar

    vas a tener que usar

    ddlCurso.DataTextField="Text"; ddlCurso.DataValueField="Value";

    ddlCurso.DataSource = Enum.GetValues(typeof(Cursos));

    ddlCurso.DataBind();


    entonces si el SelectedValue devolvera el valor dentro del enum correspondiente a la opcion seleccionada

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 13 de septiembre de 2015 15:35