none
Seleccionar por valor el option del desplegable y que se active el evento change RRS feed

  • Pregunta

  • Buenos días

    Tengo los siguientes objetos en mi página

    <div class="filaTabla filaTablaAdm">
        <div class="columnaIzquierdaLibre columnaIzquierdaLibreAdm" style="width: 35%;">
            <div class="columnaIzquierdaLibre columnaIzquierdaLibreAdm">
                <asp:Label ID="lblInfoUnidad" runat="server" Text="Unidad:"></asp:Label>
            </div>
            <div class="columnaDerechaLibre columnaDerechaLibreAdm">
                <asp:DropDownList ID="ddlUnidades" runat="server" Width="320px"></asp:DropDownList>
            </div>
        </div>
        <div class="columnaDerechaLibre columnaDerechaLibreAdm" style="width: 63%;">
            <div class="columnaIzquierdaLibre columnaIzquierdaLibreAdm">
                <asp:Label ID="LblInfoCentro" runat="server" Text="Centro:"></asp:Label>
            </div>
            <div class="columnaDerechaLibre columnaDerechaLibreAdm">
                <select id="DdlCentros" runat="server" style="width: 625px"></select>
                <input type="hidden" id="hiddenidCentro" runat="server" />
            </div>
        </div>
    </div>

    Hay un código en javascript que se configura del siguiente modo

    <script type="text/javascript">
        function LoadPage() {
            // Asociar el Combo de unidades
            $("#<%= this.ddlUnidades.ClientID %>").msDropdown({
                mainCSS: 'dd dd2',
                rowHeight: '45px',
                zIndex: 9999,
                animStyle: 'slideDown',
                on: {
                    change: function (data, ui) {
                        debugger
                        var val = data.value;
                        $.ajax({
                            type: "POST",
                            url: window.location.pathname + '/CargarCentros',
                            data: '{IdUnidadGestora: "' + val + '"}',
                            contentType: "application/json"
                        }).done(function (data) {
                            if (data.d != null) {
                                $("#Contenido_DdlCentros").msDropDown().data("dd").destroy();
                                $("#<%= this.DdlCentros.ClientID %>").empty();
    
                                $("<option selected='selected' value='-1'>Seleccione Centro</option>").appendTo($("#<%= this.DdlCentros.ClientID %>"));
                                $("[id*=hiddenidCentro]").val('-1');
    
                                // Fill drop down list with new data
                                $(data.d).each(function () {
                                    var id = this.IDCentro;
                                    var nombre = this.NombreCentro;
    
                                    // Create option
                                    var $option = $("<option value='" + id + "'>" + nombre + "</option>").appendTo($("#<%= this.DdlCentros.ClientID %>"));
                                });
    
                                // Asociar el Combo de centros
                                $("#<%= this.DdlCentros.ClientID %>").msDropdown({
                                        mainCSS: 'dd dd2',
                                        rowHeight: '45px',
                                        zIndex: 9999,
                                        animStyle: 'slideDown',
                                        on: {
                                            change: function (data, ui) {
                                                $("[id*=hiddenidCentro]").val(data.value);
                                            }
                                        }
                                    });
                                };
                            }).fail(function (ex) {
                                registrarExcepcionJavascript("NuevaSolicitud.aspx.ResponsableDisponible", "CargarCentros", ex.responseText);
                            });
                    }
                }
            });
    
            // Asociar el Combo de centros
            $("#<%= this.DdlCentros.ClientID %>").msDropdown({
                mainCSS: 'dd dd2',
                rowHeight: '45px',
                zIndex: 9999,
                animStyle: 'slideDown',
                on: {
                    change: function (data, ui) {
                        $("[id*=hiddenidCentro]").val(data.value);
                    }
                }
            });
            miCarrusel();   // Carga el Carrusel en la página
        }
    
    </script>


    Cuando el usuario selecciona en el desplegable ddlUnidades se ejecuta el código en javaScript y se carga el desplegable DdlCentros.

    Estoy intentado indicar por código que se cuando se cargue la página, por defecto del desplegable ddlUnidades se seleccione el option que tiene valor 20. Y así se ejecute el evento change y se cargé el desplegable DdlCentros con los centros correspondientes. 

    Lo hago con la siguiente instrucción, pero NO me funciona. Visualmente veo que está seleccionado en el desplegable, pero si luego pulso sobre un botón para obtener el option seleccionado este no está seleccionado

    $("#<%= this.ddlUnidades.ClientID%>").val("20").change();

    ¿Cómo hago para indicarle por jquery o javascript que el valor seleccionado en el desplegable ddlUnidades es el que tiene el valor 20?

    ¿Cómo hago para que se ejecute el evento change una vez ya he indicado que el option seleccionado del desplegable ddlUnidades?

    Me pasa lo mismo con el desplegable DdlCentros

    Muchas gracias.

    Saludos.


    • Editado Dudando MH martes, 20 de abril de 2021 8:41 Faltaba detalle
    martes, 20 de abril de 2021 8:25

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 20 de abril de 2021 20:34
    Moderador