开发者

confirm message box

开发者 https://www.devze.com 2022-12-09 16:32 出处:网络
I have a save button which when clicked should make some changes in the database. if (bFound== false) {

I have a save button which when clicked should make some changes in the database.

if (bFound== false)
{
   // Giving the warning message
   // If user presses cancel then abort

   // Prepare the list of dbId needs to be deleted
   deletedBSIds.Add(dbId);
}

Here if the bFound field is true it should not execute开发者_运维百科 the above statement, but if it is false it should go in the condition and then ask if the user want to save changes "yes" or "no".

If the user says yes it should go to the command "deletedBSIds.Add(dbId);" and keep executing further but if the user presses No it should basically abort and do nothing at all.

Is there a way to do this? Any help would be appreciated.

This is a server side event. so i think cannot add a click event in my button/..

Here the message box only pops up if the bFoung field is false. or else it will not pop up at all.

Please correct me if u feel i am wrong..

thanks


You'll want to add the following to the button:

button.OnClientClick = "return ConfirmThis();";

You'll then need to add the ConfirmThis function to the Page:

Page.ClientScript.RegisterScriptBlock(GetType(), "ConfirmThis", 
    @"function ConfirmThis() {
         if(condition) { //where condition checks the bfound element.
             return confirm(""Are you sure you want to delete this?"");
         }
         return true;
      }");

Doing this approach you're going to want to try and be able to test the bfound condition on the client side in the javascript. If the bfound value is stored in a textbox or HiddenField you should use the document.getElementById function. If the bfound value is known when you are creating the page, you can inject it into the ConfirmThis function directly, of pass it into the ConfirmThis function as a parameter.

Edit in response to your edit:

You have two options when trying to elicit a confirm from the user:

  1. Using client side logic that is already sent to the browser to perform the confirm. This is the example that I have given above.
  2. The "Other" option is to send the page back with a modal dialog, or using the confirm box. You will then get the user's confirmation back in a completely new postback to the server. So you'll need to rethink your logic to be able to temporarily store the information from the first post back and wait for the second post back to finalize the desired action.

Of the two examples, the first option is cleaner and requires no temporary memory and saves the user an additional postback.

Because both options are going to require you to rework the logic asking for the confirm, if at all possible I would try to convert the logic required for the condition to show the confirm dialog to be able to be performed on the client's computer with javascript.

Is there any way you can precalculate the bfound variable, or at the least, send enough information for it to be calculated on the client?

If you still feel like using option 2 after all of my pleading:

use the following code (based on http://www.dotnetspider.com/resources/1521-How-call-Postback-from-Javascript.aspx:

if(bfound)
{
    //save all the information you need in temporary information
    ViewState["InformationINeedToFinishAfterPostback"] = ImportantInformation;

    Page.ClientScript.RegisterScriptBlock(GetType(), "postbackmethod", Page.ClientScript.GetPostBackEventReference(this, "MyCustomArgument"));
    Page.ClientScript.RegisterStartupScript(GetType(), "startupconfirm", 
        @"if(confirm(""are you sure?"") {
              __doPostBack('__Page', 'MyCustomArgument');
          }");
}

Now to handle the postback add the following code to your page_load:

if(Request("__EVENTARGUMENT") == "MyCustomArgument")
{
    ImportantInformation = (CastToAppropriateType)ViewState["InformationINeedToFinishAfterPostback"];
    //finalize the desired action here.
}

But... I would still recommend the first option. But now you have the code you will need for both options. Also, I didn't test this code, so you're bound to encounter syntactic problems, but it gets you on the right track.


I'm not all that sure what bfound is supposed to represent, but you can't execute 1/2 way through some server code and then go back to the client- ASP.NET does not work that way.

Typically you will do the confirmation with some client side JavaScript. Google ASP.NET Yes/no confirm to find lots of different ways to do this...

Once you've done this you can then conditionally execute the server side code.


You could use the Javascript confirm() function to display a dialog box to the user with 'OK' and 'Cancel' prompts. You could then store the user's choice in a hidden field and trigger a postback. This article explains how to render Javascript code to the client using ASP.NET.


Since you are using ASP.NET you can add an attribute to your button:

 btnDelete.Attributes.Add("onclick", "return confirm('Are you sure?');");

Where btnDelete is your Button.

0

精彩评论

暂无评论...
验证码 换一张
取 消