[ASP .NET]Garder le contenu d'une variable durant un refresh

Encore moi B) , voilà, cette fois ci, j’ai un problème avec une variable DateTime qui s’initialise dès que la page subit un refresh (appel de la fonction Page_Load() ). Dans ma class, j’ai une variable qui s’intitule CurrentDate qui correspond à la date sélectionnée, et je veux qu’après le refresh, la date ne s’initialise pas et garde la nouvelle valeur qu’il a acquis avant le refresh.

Je mets le bout de code qui va bien :

[code]public partial class saisie_simplifie : System.Web.UI.Page
{
private DateTime CurrentDate;

protected void Page_Load(object sender, EventArgs e)
{
		if (CurrentDate.ToString() == "01/01/0001 00:00:00")
		{
			CurrentDate = DateTime.Now.Date;
		}
		Lbl_Today.Text = CurrentDate.ToLongDateString();

		// Instructions appelant la database pour relever les infos à cette date
}

// Mes 2 fonctions qui permet de mettre à jours la variable
protected void Btn_PreviousDay_Click(object sender, EventArgs e)
{
CurrentDate = CurrentDate.AddDays(-1);
}

protected void Btn_NextDay_Click(object sender, EventArgs e)
{
	CurrentDate = CurrentDate.AddDays(1);
}

}[/code]

Je sais si il y a une solution plus simple/propre mais moi pour pas être emmerdé avec ce genre de chose j’utilise des variables de session en général.

Pareil que Majinboo. Utilisation (abusive) de variable Session.
Donc si tu trouve une autre méthode, dis le nous ca m’interresse.

Dans ton cas, il me semble que passer la variable en ViewState est plus approprié (il s’agit d’une donnée de petite taille, qui ne concerne que la page en cours).

J’ai testé pour voir, ca marche, par contre en abusant à fond sur le jour précédent puis suivant, la session s’embrouille. Exemple, je veux voir la date de dans 2 jours. Puis d’un coup, j’ai une envie de voir le jour d’avant, et là au lieu de me décrémenter d’un jour, la date me renvoie au lendemain (soit 3 jours) :smiley:

Vais me renseigner à propos du Viewstate.

EDIT : bon, ViewState joue à peu près le même role que la Session. Par contre, les refresh se font en retard. C’est à dire que le premier clic ne fait effet qu’au second clic B)

Bon, comme je le disais, je viens de lancer le debuguer pour comprendre le retard de mise à jour de la date.
En fait, dès que je clique sur l’un de mes boutons, au lieu de modifier la date avant le refresh, la page s’auto refresh puis rentre dans l’évènement du bouton pour effectuer la mise à jour.

Du coup, sois je suis obligé de faire un refresh après modification or si je place un Response.redirect(« lien_de_la_page.aspx »), là la Viewstate ne recoit aucune mise à jour. :confused:

Voici le code :

[code] protected void Page_Load(object sender, EventArgs e)
{
if (CurrentDate.ToString() == « 01/01/0001 00:00:00 »)
{
if (ViewState[« currentday »] == null)
{
ViewState[« currentday »] = (DateTime)Session[« date »];
}
CurrentDate = (DateTime)ViewState[« currentday »];
}
Lbl_Today.Text = CurrentDate.ToLongDateString();
}

protected void Btn_PreviousDay_Click(object sender, EventArgs e)
{
	ViewState["currentday"] = CurrentDate.AddDays(-1);
	Response.Redirect("saisie_simplifie.aspx"); // redirige avant de tomber sur l'instruction si dessus
}

protected void Btn_NextDay_Click(object sender, EventArgs e)
{
	ViewState["currentday"] = CurrentDate.AddDays(1);
	Response.Redirect("saisie_simplifie.aspx");
}[/code]