vishali
vishali

Reputation: 95

how to get client side confirm box value to make server side operations?

I am using Client script for confirm message box as follows

 string script = "fadeScript";
                ScriptManager.RegisterClientScriptBlock(this.Page, script.GetType(), "Script", "Closewindow();", true);

java script function:

<script type="text/javascript">
    function Closewindow() {
        var Result = confirm("Are you sure want to delete?");
        alert(Result);
        if (Result == true) {
            document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
            alert(txtConfirmresult.value);
        return true;
        }
    else 
    {
        document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
        alert('BYE');
         return false;
        }
}

</script>

I want to use the script return value in .cs file to excite procedure if it returns true. if it return false i have to stay on that particular page only. plz kindly help me on this

Upvotes: 2

Views: 4423

Answers (1)

Jaime Torres
Jaime Torres

Reputation: 10515

You can use __doPostBack(target, argument) to post back to the server. You can then evaluate __EVENTTARGET and __EVENTARGUMENT in the post data to see what you sent back and perform logic appropriately. Here is a link that provides a little more in depth information.

A quick example:

Script/Client side:

<script type="text/javascript">
    function Closewindow() {
        var Result = confirm("Are you sure want to delete?");
        alert(Result);
        if (Result == true) {
            var txtConfirmResult = document.getElementById('txtConfirmresult');
            txtConfirmResult.value = Result;//assigning to hidden text box 
            alert(txtConfirmresult.value); //displaying for debug purposes
            __doPostBack( 'txtConfirmresult', Result ); //sending back to server.
        return true;
        }
    else 
    {
        document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
        alert('BYE');
         return false;
        }
}

C#

    protected void Page_Load(object sender, EventArgs e)
    {
        string target =  Request["__EVENTTARGET"];
        string argument = Request["__EVENTARGUMENT"];

        if (target != null && target.Equals( "txtConfirmresult" ) )
        {
             this.DoSomeGreatServerSideProcessing(argument);
        }
    }

Updated to add slightly more correct variable names, but should work with your existing codebase assuming your script was working. I would be very careful using txtConfirmresult as your ID as that will only work if runat="server" is not set on the textbox. If that is the case, the ID will be prepended to denote container hierarchy.

I would suggest naming your "callbacks" very well, such as:

Script/Client side:

<script type="text/javascript">
    function Closewindow() {
        var Result = confirm("Are you sure want to delete?");
        document.getElementById('txtConfirmresult').value = Result;//assigning to hidden text box 
        if (Result) {

            __doPostBack( 'UserConfirmedFormSubmission', "CloseWindow" ); //sending back to server.
            return true;
        }
        else 
        { 
           return false;
        }
}

C#

    protected void Page_Load(object sender, EventArgs e)
    {
        string target = Request["__EVENTTARGET"];
        string argument = Request["__EVENTARGUMENT"];

        if (!string.IsNullOrEmpty(target) && target.Equals("UserConfirmedFormSubmission"))
        {
             if ( !string.IsNullOrEmpty(argument) && argument.equals("CloseWindow"))
             {
                this.HandleUserRequestedCloseWinow();
             }
        }
    }

Upvotes: 2

Related Questions