Executer une fonction javascript immédiatement dans une methode buttonclick
Bonjour,
Je lance un script javascript via la méthode RegisterStartupScript et je récupère la valeur du confirm du script via un HtmlInputHidden, comme vous le verrez ci-dessous.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| protected void BtUpload_Click(object sender, EventArgs e)
{
if (IsAValidFile())
{
//If file already exists => Replace or cancel the action ?
bool ReplaceFile = false;
if (IsAlreadyUploaded())
{
if (WantToReplaceFile() == "Oui")
{
ReplaceFile = true;
}
else
{
ReplaceFile = false;
}
UploadAFile();
}
}
}
private bool IsAlreadyUploaded()
{
return true;
}
private string WantToReplaceFile()
{
//To get value of pop-up in case of upload a file already existing on the server.
ConfirmReplace = new HtmlInputHidden();
ConfirmReplace.ID = "1";
ConfirmReplace.Name = "ConfirmReplace";
this.Controls.Add(ConfirmReplace);
//Ask for replace the file or cancel the action.
string scriptJS = "<script language=\"JavaScript\">document.getElementById(\"" + ConfirmReplace.ClientID.ToString() + "\").value = confirm(\"" + Resources.PortalResources.LbUploadRejected + "\");" + Page.GetPostBackEventReference(ConfirmReplace) + "</script>";
Page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), "test", scriptJS);
return ConfirmReplace.Value;
} |
Par contre via le debugger j'ai pu observé que le code de la méthode BtUpload_Click s'exécute entiérement avant que la pop-up confirm javascript ne s'affiche.
Je souhaiterais que la pop-up s'affiche avant l'exécution de UploadAFile(), afin de l'exécuter conditionnellement en fonction du retour de confirm.
Je me demandais si pour cela je ne devrais pas plutôt exécuter la méthode RegisterClientScriptBlock ?
Ou bien alors dois je créer un event qui sera déclencher dans BtUpload_Click et qui s'occupera de lancer UploadAFile ? Mais dans ce cas je ne sais plus si la méthode BtUpload_Click se terminera ou non avant de passer dans la nouvelle methode associé à l'event ?
Avez vous d'autres idées ?
Merci d'avance pour votre aide.
Cédric.