none
No obtengo el valor del DropdownList RRS feed

  • Pregunta

  • Buenas Tardes,

    Tengo un DropDownList en mi pagina q NO ESTA ENLAZADA A UNA BD, solo maneja items simples; y lo q sucede es q al querer guardarlo al darle click en mi button veo q el dropdownlist solo toma el primer elemento. Puse un breakpoint y efectivamente asi seleccione los demas elementos este solo me captura el primero.

    lunes, 3 de agosto de 2015 22:17

Respuestas

  • prueba con esto asi lo hice yo.

    public enum Estatus
            {
                PERMITIDO,
    	NO PERMITIDO,
    	APRUEBA,	
    	PENDIENTE
            }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                int Id_Estatus = 0;
                if (!Page.IsPostBack)
                {
                    
                    foreach (int value in Enum.GetValues(typeof(Estatus)))
                    {
                        CMBESTADO.Items.Add(new ListItem(Enum.GetName(typeof(Estatus), value), value.ToString()));
                    }
    
    }        }
    

    • Marcado como respuesta _-.',Kevin miércoles, 5 de agosto de 2015 1:26
    martes, 4 de agosto de 2015 22:17

Todas las respuestas

  • Hola Kevin.

    Puedes compartir la declaración de tu dropdownlist. El problema pude ser que no esta configurado 

    EnableViewState="true"

    Saludos,

    Norberto Rojas


    lunes, 3 de agosto de 2015 22:35
  • Si, está en True
    lunes, 3 de agosto de 2015 22:36
  • Imagino que en onload de la pagina llenas los datos.

    Recuerda encerrarlo dentro de un IsPostBack para que no se vuelva a llenar el DropDownList.

    Saludos.

    lunes, 3 de agosto de 2015 22:36
  • eso tengo en el load:

          if (!IsPostBack)
                {

                    cmbestado.Items.Add("PERMITIDO");
                    cmbestado.Items.Add("NO PERMITIDO");
                    cmbestado.Items.Add("A PRUEBA");
                    cmbestado.Items.Add("PENDIENTE");

                }

    lunes, 3 de agosto de 2015 22:38
  • Si intentas hacerlo declarativamente.

    <asp:DropDownList runat="server" ID="cmbestado">
                        <asp:ListItem Value="PERMITIDO" Text="PERMITIDO"></asp:ListItem>
                        <asp:ListItem Value="NO PERMITIDO" Text="NO PERMITIDO"></asp:ListItem>
                    </asp:DropDownList>

    Saludos,

    Norberto Rojas

    lunes, 3 de agosto de 2015 22:45
  • Y tu codigo en SelectedItemChage cual es? o como es que verificas que solo toma el primero. En que evento lo haces?

    lunes, 3 de agosto de 2015 22:46
  • ese.. tengo en el selecteditemchange y ni entra al if

     if (!IsPostBack)

                {
                    estado = cmbestado.SelectedItem.ToString();
                }

    lunes, 3 de agosto de 2015 22:53
  • hola

    pero se supone que el

    if(!IsPostBack){

    }

    se usa dentro del Page_Load

    public void Page_Load(...){
    
        if(!IsPostBack){
    
            //aqui asignas los items del combo
    
        }
    
    }

    sino haces esto al producirse cualquier evento perderas la seleccion

    >>tengo en el selecteditemchange y ni entra al if

    si usas el evento del combo debes asignar el AutoPostback = true, pero igual esyo no te hace falta si usas el evento del boton para tomar la seleccion del combo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 4 de agosto de 2015 1:37
  • En el SelectedItemChange no tienes que usar el if(!IsPostBack) solo en el Onload. Y para que entre al evento debes ponerle Autopostback=true.

    Saludos.

    martes, 4 de agosto de 2015 13:06
  • Si ya le quite el IsPostBack del Evento del DDL y solo esta en el load pero cuando doy en mi button aceptar veo q me toma el primer valor del DDL y no el q elijo.. ayudaaaaaa
    martes, 4 de agosto de 2015 21:45
  • prueba con esto asi lo hice yo.

    public enum Estatus
            {
                PERMITIDO,
    	NO PERMITIDO,
    	APRUEBA,	
    	PENDIENTE
            }
    
            protected void Page_Load(object sender, EventArgs e)
            {
                int Id_Estatus = 0;
                if (!Page.IsPostBack)
                {
                    
                    foreach (int value in Enum.GetValues(typeof(Estatus)))
                    {
                        CMBESTADO.Items.Add(new ListItem(Enum.GetName(typeof(Estatus), value), value.ToString()));
                    }
    
    }        }
    

    • Marcado como respuesta _-.',Kevin miércoles, 5 de agosto de 2015 1:26
    martes, 4 de agosto de 2015 22:17
  • de casualidad estas usando un control UpdatePanel ?

    porque si es asi recuerda que el control debe estar dentro del template


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 4 de agosto de 2015 22:57
  • La verdad no tengo mucho conocimientos web y no se como podría ver si estoy usando updatepanel
    miércoles, 5 de agosto de 2015 1:03
  • el updatepanel es un control, si tienes en el html un tag con ese nombre entonces es que lo usas

    igualmente veo que marcaste una respuesta por lo que imagino solucionaste el problema

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 5 de agosto de 2015 2:20
  • Hola, yo se que ya lo marcaste como respuesta, pero no creo que sea tu solucion, de entrada en un enum no se permiten espacios como nombre de una enumeracion, luego el llenar de diferente forma los items del combobox no creoque se relacione con la solucion a tu problema, y si asi fuera, es probablemente porque porque al verificar el valor seleccionado estabas usando cmbestado.SelectedValue, en lugar de usar cmbestado.SelectedItem.Text, ya que como originalmente llenabas tu combobox no asignabas un valor a cada Item.

    Pero en fin. Si dices que con eso se soluciono tu problema seguramente asi fue.

    Saludos.

    miércoles, 5 de agosto de 2015 14:25