it-swarm.com.de

Bestätigen Sie die Postback-Schaltfläche OnClientClick ASP.NET

<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
                           OnClick="BtnUserDelete_Click"
                           OnClientClick="return UserDeleteConfirmation();" 
 meta:resourcekey="BtnUserDeleteResource1" />

Ich habe versucht:

function UserDeleteConfirmation() {
        if (confirm("Are you sure you want to delete this user?"))
            return true;
        else
            return false;
}

und 

function UserDeleteConfirmation() {
    if (confirm("Are you sure you want to delete this user?")) {
            __doPostBack(btnUserDelete, '');
    }

    return false;
 }

Und keiner von ihnen funktioniert.

44
makambi

Versuche dies:

<asp:Button runat="server" ID="btnUserDelete" Text="Delete" CssClass="GreenLightButton"
                       OnClick="BtnUserDelete_Click"
                       OnClientClick="if ( ! UserDeleteConfirmation()) return false;" 
 meta:resourcekey="BtnUserDeleteResource1" />

Auf diese Weise wird das "Zurück" nur ausgeführt, wenn der Benutzer auf "Abbrechen" klickt und nicht wenn er auf "OK" klickt.

Übrigens können Sie die UserDeleteConfirmation-Funktion folgendermaßen verkürzen:

function UserDeleteConfirmation() {
    return confirm("Are you sure you want to delete this user?");
}
77
Hans Kesting

Es gibt hier Lösungen, die funktionieren werden, aber ich sehe niemanden, der erklärt, was hier eigentlich passiert, also werde ich es erklären, auch wenn das 2 Jahre alt ist.

Mit dem hinzugefügten Onclientclick-Javascript ist nichts "falsch". Das Problem ist, dass asp.net Onclick-Sachen hinzufügt, die ausgeführt werden, sobald der Code, den Sie dort eingeben, ausgeführt wird.

Also zum Beispiel dieses ASPX:

<asp:Button ID="btnDeny" runat="server" CommandName="Deny" Text="Mark 'Denied'" OnClientClick="return confirm('Are you sure?');" />

wird beim Rendern in diesen HTML-Code umgewandelt:

<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">

Wenn Sie genau hinschauen, wird der __doPostBack-Kram niemals erreicht, da das "Confirm" immer true/false zurückgibt, bevor __doPostBack erreicht wird.

Aus diesem Grund müssen Sie nur bestätigen, dass false zurückgegeben wird, und nicht, wenn der Wert true ist. Technisch ist es egal, ob es wahr oder falsch zurückgibt, jede Rückgabe in dieser Instanz würde den Aufruf von __doPostBack verhindern, aber bei Konvention würde ich es so belassen, dass es falsch ist, wenn es falsch ist und nichts für wahr tut .

32
chrismay

Sie können die obigen Antworten wie folgt in eine Zeile schreiben. Und Sie müssen die Funktion nicht schreiben. 

    <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;"  />
13
Praveen Mitta

JQuery UI-Dialog verwenden:

SKRIPT:

<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>
12

Der Code ist wie folgt:

In Aspx:

<asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" CausesValidation=true />

in 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";
    }
}
5
RckLN

versuche dies : 

<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"  />
5
Mahmoud Farahat

versuche dies: OnClientClick="return confirm('Are you sure ?');" Setze auch: CausesValidation="False"

4
Srinivas

Versuche dies:

<asp:Button runat="server" ID="btnDelete" Text="Delete"
   onClientClick="javascript:return confirm('Are you sure you want to delete this user?');" OnClick="BtnDelete_Click" />
3
Vinicius

Dies ist eine einfache Methode, um die clientseitige Validierung vor der Bestätigung durchzuführen. Sie verwendet das integrierte ASP.NET-Validierungs-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();" />

Quelle: Clientseitige Validierung mit ASP.Net Validator-Steuerelementen von Javascript

1
Jupiter

Versuche dies:

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);
    }
}

In Tastenaufruffunktion:

<asp:Button ID="btnReprocessar" runat="server" Text="Reprocessar" Height="20px" OnClick="btnReprocessar_Click" OnClientClick="Confirm()"/>

In der Klasse .cs Aufrufmethode:

        protected void btnReprocessar_Click(object sender, EventArgs e)
    {
        string confirmValue = Request.Form["confirm_value"];
        if (confirmValue == "Yes")
        {

        }
    }
0
Anderson Borba