page - postback c# javascript
Confirmar devolución de datos OnClientHaga clic en el botón ASP.NET (10)
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click"
OnClientClick="return UserDeleteConfirmation();"
meta:resourcekey="BtnUserDeleteResource1" />
Yo he tratado:
function UserDeleteConfirmation() {
if (confirm("Are you sure you want to delete this user?"))
return true;
else
return false;
}
y
function UserDeleteConfirmation() {
if (confirm("Are you sure you want to delete this user?")) {
__doPostBack(btnUserDelete, '''');
}
return false;
}
Y ninguno de ellos funciona
Aquí hay soluciones que funcionarán, pero no veo a nadie explicando lo que está sucediendo aquí, así que aunque tengo 2 años, lo explicaré.
No hay nada "incorrecto" con el javascript onclientclick que está agregando. El problema es que asp.net está agregando que está en cosas de clic para ejecutar DESPUÉS de que se ejecute el código que allí se ingrese.
Entonces, por ejemplo, este ASPX:
<asp:Button ID="btnDeny" runat="server" CommandName="Deny" Text="Mark ''Denied''" OnClientClick="return confirm(''Are you sure?'');" />
se convierte en este HTML cuando se procesa:
<input name="rgApplicants$ctl00$ctl02$ctl00$btnDeny" id="rgApplicants_ctl00_ctl02_ctl00_btnDeny"
onclick="return confirm(''Are you sure?'');__doPostBack(''rgApplicants$ctl00$ctl02$ctl00$btnDeny'','''')" type="button" value="Mark ''Denied''" abp="547">
Si miras detenidamente, nunca se alcanzará lo de __doPostBack, porque el "confirmar" siempre devolverá verdadero / falso antes de que __doPostBack se alcance.
Esta es la razón por la que debe tener la confirmación solo devolver falso y no regresar cuando el valor sea verdadero. Técnicamente, no importa si devuelve verdadero o falso, cualquier devolución en esta instancia tendría el efecto de impedir que se llamara a __doPostBack, pero por convención lo dejaría de modo que devuelva falso cuando sea falso y no haga nada para verdadero .
El código es así:
En Aspx:
<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" CausesValidation=true />
en Cs:
protected void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
btnSave.Attributes["Onclick"] = "return confirm(''Do you really want to save?'')";
}
}
protected void btnSave_Click(object sender, EventArgs e){
Page.Validate();
if (Page.IsValid)
{
//Update the database
lblMessage.Text = "Saved Successfully";
}
}
Esta es una forma simple de hacer la validación del lado del cliente ANTES de la confirmación. Hace uso de la validación de ASP.NET incorporada javascript.
<script type="text/javascript">
function validateAndConfirm() {
Page_ClientValidate("GroupName"); //''GroupName'' is the ValidationGroup
if (Page_IsValid) {
return confirm("Are you sure?");
}
return false;
}
</script>
<asp:TextBox ID="IntegerTextBox" runat="server" Width="100px" MaxLength="6" />
<asp:RequiredFieldValidator ID="reqIntegerTextBox" runat="server" ErrorMessage="Required"
ValidationGroup="GroupName" ControlToValidate="IntegerTextBox" />
<asp:RangeValidator ID="rangeTextBox" runat="server" ErrorMessage="Invalid"
ValidationGroup="GroupName" Type="Integer" ControlToValidate="IntegerTextBox" />
<asp:Button ID="SubmitButton" runat="server" Text="Submit" ValidationGroup="GroupName"
OnClick="SubmitButton_OnClick" OnClientClick="return validateAndConfirm();" />
Fuente: validación del lado del cliente utilizando los controles del validador ASP.Net de Javascript
Prueba esto:
<asp:Button runat="server" ID="btnDelete" Text="Delete"
onClientClick="javascript:return confirm(''Are you sure you want to delete this user?'');" OnClick="BtnDelete_Click" />
Prueba esto:
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click"
OnClientClick="if ( ! UserDeleteConfirmation()) return false;"
meta:resourcekey="BtnUserDeleteResource1" />
De esta forma, el "retorno" solo se ejecuta cuando el usuario hace clic en "cancelar" y no cuando hace clic en "Aceptar".
Por cierto, puede acortar la función UserDeleteConfirmation a:
function UserDeleteConfirmation() {
return confirm("Are you sure you want to delete this user?");
}
Prueba esto:
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Your asking")) {
confirm_value.value = "Yes";
document.forms[0].appendChild(confirm_value);
}
else {
confirm_value.value = "No";
document.forms[0].appendChild(confirm_value);
}
}
En la función de llamada de botón:
<asp:Button ID="btnReprocessar" runat="server" Text="Reprocessar" Height="20px" OnClick="btnReprocessar_Click" OnClientClick="Confirm()"/>
En clase .cs método de llamada:
protected void btnReprocessar_Click(object sender, EventArgs e)
{
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
}
}
Puede poner las respuestas anteriores en una línea como esta. Y no necesitas escribir la función.
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
OnClick="BtnUserDelete_Click" meta:resourcekey="BtnUserDeleteResource1"
OnClientClick="if ( !confirm(''Are you sure you want to delete this user?'')) return false;" />
Usando el diálogo jQuery UI:
GUIÓN:
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
$(function () {
$("#<%=btnUserDelete.ClientID%>").on("click", function (event) {
event.preventDefault();
$("#dialog-confirm").dialog({
resizable: false,
height: 140,
modal: true,
buttons: {
Ok: function () {
$(this).dialog("close");
__doPostBack($(''#<%= btnUserDelete.ClientID %>'').attr(''name''), '''');
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
});
</script>
HTML:
<div id="dialog-confirm" style="display: none;" title="Confirm Delete">
<p><span class="ui-icon ui-icon-alert" style="float: left; margin: 0 7px 20px 0;"></span>Are you sure you want to delete this user?</p>
</div>
intente esto: OnClientClick="return confirm(''Are you sure ?'');"
También establecido: CausesValidation="False"
prueba esto :
<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
onClientClick=" return confirm(''Are you sure you want to delete this user?'')"
OnClick="BtnUserDelete_Click" meta:resourcekey="BtnUserDeleteResource1" />