asp.net drop-down-menu onchange autopostback

asp.net - DropdownList autoposback después de la confirmación del cliente



drop-down-menu onchange (8)

¿Ha intentado establecer el evento onChange en una función javascript y luego dentro de la función muestra la alerta javascript y utiliza la función __doPostback si pasa?

es decir

drpControl.Attributes("onChange") = "DisplayConfirmation();" function DisplayConfirmation() { if (confirm(''Are you sure you want to do this?'')) { __doPostback(''drpControl'',''''); } }

Tengo una lista desplegable con el autopostback establecido en verdadero. Quiero que el usuario confirme si realmente quiere cambiar el valor, que en la publicación vuelve a desencadenar un evento del lado del servidor (selectedindexchanged).

He intentado agregar un atributo onchange "return confirm (''Por favor, haga clic en OK para cambiar. De lo contrario, haga clic en CANCEL?'';") Pero no se devolverá independientemente del resultado de la confirmación y el valor de la lista no se revertirá si cancela la selección.

Cuando elimino el atributo onchange de la etiqueta DropdownList, la página realiza una devolución de datos. No ocurre cuando se agrega el atributo onchange. ¿Todavía necesito conectar el controlador de eventos (estoy en C # .Net 2.0).

Cualquier pista será útil.

¡Gracias!


Actualmente, siempre está devolviendo el resultado de la confirm() , por lo que incluso si devuelve true , aún se detendrá la ejecución del evento antes de que la devolución de datos pueda dispararse. Su return false; debe return false; solo cuando la confirm() hace así:

if (!confirm(''Please click OK to change. Otherwise click CANCEL?'')) return false;


Asegúrate de que tu evento esté cableado:

dropDown.SelectedIndexChanged += new EventHandler(dropDown_SelectedIndexChanged);

También puede aplicar un atributo del lado del cliente para devolver la confirmación. Establezca el índice en consecuencia si se cancela.

dropDown.Attributes.Add("onchange", "javascript: return confirm(''confirmation msg'')");


Puede utilizar el control CustomValidator para "validar" el menú desplegable llamando a una función javascript en la que hace la confirmación ():

<asp:DropDownList ID="TestDropDown" runat="server" AutoPostBack="true" CausesValidation="true" ValidationGroup="Group1" OnSelectedIndexChanged="TestDropDown_SelectedIndexChanged"> <asp:ListItem Value="1" Text="One" /> <asp:ListItem Value="2" Text="Two" /> </asp:DropDownList> <script type="text/javascript"> function ConfirmDropDownValueChange(source, arguments) { arguments.IsValid = confirm("Are you sure?"); } </script> <asp:CustomValidator ID="ConfirmDropDownValidator" runat="server" ClientValidationFunction="ConfirmDropDownValueChange" Display="Dynamic" ValidationGroup="Group1" />


Anular el atributo onchange no funcionará si tiene AutoPostBack establecido en verdadero porque ASP.NET siempre agregará lo siguiente al final de su script onchange:

;setTimeout(''__doPostBack(/'YourDropDown/',/'/')'', 0)

Si configura AutoPostBack en falso, entonces anular el cambio con un script de tipo "confirmar y __doPostBack" (ver arriba, err .. a continuación) funcionará, pero puede que tenga que crear manualmente la función __doPostBack.


Lo siguiente funciona cuando DropDownList está activando devoluciones de datos parciales:

// caching selected value at the time the control is clicked MyDropDownList.Attributes.Add( "onclick", "this.currentvalue = this.value;"); // if the user chooses not to continue then restoring cached value and aborting by returning false MyDropDownList.Attributes.Add( "onchange", "if (!confirm(''Do you want to continue?'')) {this.value = this.currentvalue; return false};");


if (!confirm(''Please click OK to change. Otherwise click CANCEL?'')) return false;

Siempre regresa para que el evento OnSelectedIndexChanged de la lista desplegable se dispare si el usuario hace clic en Aceptar o CANCELAR.


&lt;asp:DropDownList runat="server" ID="ddlShailendra" AutoPostBack="True" OnSelectedIndexChanged="ddlShailendra_SelectedIndexChanged" onchange="javascript: { if(confirm(''Click ok to prevent post back, Cancel to make a postback''))return true;} " &gt; &lt;asp:ListItem Text="tes" Value="1" >&lt;/asp:ListItem&gt; &lt;asp:ListItem Text="test" Value="-1"&gt;&lt;/asp:ListItem&gt; &lt;/asp:DropDownList&gt;

Escriba la función en línea y no tenga un "retorno" para la condición en la que desea que vuelva una publicación. Esto funciona y es según los estándares.