ASP.NET - Dudas del ScriptManager

   
Vista:

Dudas del ScriptManager

Publicado por Luis Alberto (1 intervención) el 24/07/2009 00:01:22
Hola, buen dia.

Estoy utilizando funciones de javascript en c# mediante:

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "temp", "confirmation();", true);

Por ejemplo con las siguiente funciona ejecuto un cuadro de dialogo para Aceptar cierta oprecion o Canclear su ejecucion,

<script type="text/javascript">
function confirmation() {
var pregunta = confirm("Realimente quieres borrarlo?");
if (pregunta == false) {
return false;
}
else {

document.getElementById('HiddenField1').value = pregunta;

}
}
</script>

En mi pagina aspx tengo un campo oculto llamado HiddenField1. Y un boton

En load tengo lo siguiente:
boton.Attributes.Add("onClick", "return confirmation()");

De tal forma que al dar clik en el boton,, me muestra el mensaje y si le doy Aceptar me ejecuta Todo lo que tiene el boton en el evento OnClick. Y si doy Cancelar, no ingresa al metodo del boton.

El motivo de incluir en la funcion la linea:
document.getElementById('HiddenField1').value = pregunta;

Es por que lo que yo quisiere es que al yo dar clik en el boton, lo primero que haga sea validr cierta condicion y si se cumple entonces ahora si ejecuta El cuadro de dialogo con la pregunta y en vase a la respuesta /Aceotar o Cancelar) ejecuta cierto codigo de c#..

Tengo algo mas o menos asi en mi aspx.cs

protected void Boton_Click(object sender, EventArgs e)
{

int num = 1;

if (num == 1) //Si num = 1 entonces si ejecutaria mi cuadro de dialogo.
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "confirmation();", true);

}
else //Si num no es = 1 entonces no ejecuta el cuadro de doalogo con la pregunta y ejecuta cualkier cosa dentro de c#
{

Instrucciones c#
.
.
.
}

if ((num ==1)&&( Convert.ToString(HiddenField1.Value) == "true")) // Si nume = 1 y El campo oculto tomo el valor true (Osea que seleccionamos Aceptar en el el cuador de dialogo confirmation. -->
{
Instrucciones de c# para cuando seleecionamos aceptar
}

Al ejecutar la funcion confirmation() y dar Aceptar o Cancelar, el HidenFiel.value si me toma correctamente True o False segun sea la respuesta, Pero el problema es que la instruccion
ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "confirmation();", true);
se ejecuta hasta que ya terminó de ejecutarse todo el bloque de codigo del Metodo
protected void Boton_Click(object sender, EventArgs e)

Por lo que durante todo el metodo del boton, HidenFiel.value siempre permanece Null, y ya toma los valores True o False hasta que SE TERMINO DE EJECUTAR ESTE METODO Y POR LO TANTO LA CONDICION
if ((num ==1)&&( Convert.ToString(HiddenField1.Value) == "true")) /
NUNCA SE CUMPE POR QUE SIEMPRE HiddenField1.Value = nULL
nO SE si haya una fomra de que la instruccion
ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "confirmation();", true);
se ejecute al instante (antes de terminar el evento del boton) para que de esta forma en la siguiente linea de codigo ya HiddenField1.Value traiga el valor arrojado por la funcion y pueda realizar la comparacion
if ((num ==1)&&( Convert.ToString(HiddenField1.Value) == "true"))

Espero haberme dado a enteder y q me puedan ayudar.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder