Incremento de Variable

Espero puedan resolver mi inquietud .
Estoy estudiando asp.net y me encuentro con el problema de que . .normalmente incremento una variable en c# trabajando en windowsform declarando una variable a nivel de clase . .por ej
int contador =0;
private void CuentaClicks(Object sender, EventArgs e){
contador++;
lblCuenta.Text=contador.toString();
}
cada vez que hago clickeo el boton me incrementa la variable contador
el problema es que al querer hacer lo mismo en webForm no me sale . . Y no entiendo muy bien lo del Page.IsPostBack;

1 Respuesta

Respuesta
1
Haciendo referencia a tu pregunta, te comento que el Page. Postback siempre reinicia tus clases ya que son peticiones realizadas del cliente al servidor, a diferencia de una aplicación windows forms que siempre está en memoria.
En fin, para que hagas ese autoincremento debes mantener el valor de la variable en algún lado en la parte cliente para que una vez que le hagas click al botón la recuperes y sigas interactuando con ella en tu procedimiento.
Ejemplo:
int contador =0; 
private void CuentaClicks(Object sender, EventArgs e){ 
contador=Convert.ToInt16(lblCuenta.Text);
contador++;
lblCuenta.Text=contador.toString(); 
}
Entonces cada vez que presiones click en el botón recuperas el último valor y nuevamente le incrementas el valor.
Hola que tal,
Bien entiendo lo del postback . pero creo que en la linea en la que hace la conversión puede generar un error pues si el Label contiene texto no se podrá hacer la conversión a int .
La opción que he visto más viable es la utilización de los ViewState, Session, Application, que son objetos que a pesar de que se realice una postback preservan el valor que tienen.
Hago lo siguiente "Espero comentarios"
en el Page_Load
protected void Page_Load(Object sender, EventArgs e){
if(!IsPostBack)
{
ViewState["Contador"]=1;
}
}
//ahora metodo asociado al evento click del boton
protected void CuentaClicks(Object sender, EventArgs e)
{
lblContador=ViewState["Contador"].toString();
ViewState["Contador"]=(int)ViewState["Contador"] + 1;
}
No está mal usar los objetos que comentas, aunque si indagas más sobre el Viewstate te darás cuenta que todo objeto (control) colocado en tu página .aspx con el tag runat=server se registrara en él.
Si tienes un textbox, este objeto se incrustará en el Viewstate para guardar su valor antes del Postback. Es por eso que cuando tienes un dropdownlist y seleccionas un valor y haces postback te lo mantiene seleccionado.
Yo en particular usaría el objeto session, aunque defiendo que el uso que se de a cada objeto mencionado dependerá de la situación y complejidad del sistema. Y si es para tu ejemplo esta bien el uso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas