bonsoir,
comment je peux récuperer le contenu d'une variable utilisée dans une autre methode??
j'ai essayé par exp bool ref maVariable=false; lors de la declaration
j'ai essayé de mettre la variable desiree comme valeur retournée et je la recupere avec maVariable=nomclasse.nomMethode();
mais ça ne marche pas
A voir également:
Récupération d'une variable issue d'une autre methode
si tu as cela dans le code ta page cela devrait marcher (enfin faut corriger le touve en trouve et ton premier cast en bool est pas necessaire mm deconseillé.
Si ta structure de page ressemble a ceci ca devrait marcher:
public partial class _Default : System.Web.UI.Page
{
public bool trouve
{
get
{
bool text = (ViewState["trouve"] != null) ? (bool)ViewState["trouve"] : false;
return text;
}
set
{
ViewState["trouve"] = value;
}
}
//pour le test
//j'ai un bouton qui realise un postback donc premiere fois il m'affiche faux, apres un postback il m'affiche vrai
protected void Page_Load(object sender, EventArgs e)
{
if (trouve)
Response.Write("vrai");
else
{
Response.Write("faux");
trouve = true;
}
}
...
}
Corrige deja le touve en trouve bien que je pense que tu l'ai deja fait mais bon ^^
EDIT: je viens de voir ton autre post, et bien sur tu peux stocker dans la session mais cela n'est peut-etre pas necessaire. Il faut voir quelle est le "scope" dont tu as besoin. Ici si tu as juste besoin de passer une info d'un postback a l'autre le viewstate ira très bien. Si par contre tu souhaites garder une info toute au long de la session et que tu comptes la reutiliser a plus endroits/reprises alors la oui tu utiliseras l'objet Session.
Donc pour résumer:
La Session te permet de stocker des informations pour une durée determinée et pour un utilisateur donnée tant qu'il interagit avec l'application web.
Le Viewstate se contente de garder l'info d'un postback à l'autre
voici un bout de code:
protected void CalendarI_SelectionChanged(object sender, EventArgs e)
(.......................)
if (dateValide)
{
// test de la date : existe ou non dans la table de pointage
while (i < ds.Tables[0].Rows.Count && !trouve)
{
if (Convert.ToDateTime(ds.Tables[0].Rows[i].ItemArray[0]).ToShortDateString() == CalendarI.SelectedDate.ToShortDateString())
{ trouve = true; } // la date selectionnée existe dans la table pointages
i++;
}
}
il faut que tu sauves ta variable d'une page a l'autre, car SelectionChanged et button_click provoque un postback et par conséquent tu perds l'état de tes variables.
Stockes donc ta variable "trouve" dans un ViewState par exemple.
merci RougailSaucisse pour ta réponse, j'étais vraiment bloquée...
mais en fait le blocage persiste encore
l'emploi du ViewSate m'a généré une erreur :
Error 1 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'System.Web.UI.Control.ViewState.get' C:\Documents and Settings\user\Mes documents\Visual Studio 2005\WebSites\CorrectionPointage\Insertion.aspx.cs 17 28 C:\...\CorrectionPointage\
pourtant j'utlise
using
System.Web.UI;
using
System.Web.UI.WebControls;
quelle est la référence manquante?
peux tu m'expliquer d'avantage qu'est ce qu'un ViewState???
hummm comment et ou emploi tu le viewstate qui te genère cette erreur?
La comme ca j'avoue que je ne vois pas bien. a premiere vue j'aurai pensé que tu utilisais cela dans une classe n'implementant pas System.Web.UI.Page mais l'erreur semble provenir d'un code behind d'une de tes pages donc ca devrait pas etre ca. La deuxieme chose à laquelle j'aurai pensé c'est que tu fais appel a ViewState dans une méthode static de ta page (et du fais qu'une methode static ne peut appeler une methode d'instance tu pourrais avoir cette erreur).
enfin peu importe, si tu pouvais indiquer la fonction/le contexte dans laquelle tu fais appel a ViewState et qui te renvoie cette erreur on verra bien.
sinon pour le viewstate je n'ai pas de lien précis, mais le net est inondé d'infos a ce sujet (fais un tour sur http://www.msdn.com, ou http://asp.net/learn) je suis sur qu'il y a aura des trucs a ce sujet.
bonjour,
j'ai fait un petit tour sur le net apropos du ViewState, j'ai noté que l'emploi de ce controle est toujours lié a gridview..dropdownlist...qui n'est le cas pour moi
je pense qu'il est destiné de stocker des variables coté client d'un gridview dropdownlist...mais pas une variable quelconque en code behind...
je ferai d'autre tentatives...
si si tu peux stocker ce que tu veux dans un viewstate ;)
Dans les exemples que tu as du voir il est utilisé pour garder l'etat des variables, comportement par défaut, mais tu peux de la mm manière stocket n'importe quel type de variable dans le viewstate. Par exemple pour les tri sur certains controles de données, on peut stocker l'index courant (PageIndex) dans le viewstate et ce n'est pourtant bien qu'un int qu'on stocke.
donc de la mm manière si tu as besoin de stocker un autre type pour quelconque raison tu peux le faire. Le tout dans ton cas etait de verifier si tu n'appelait ton viewstate dans une methode static.
j'ai une suggestion je sais qu'elle est bête mais comme meme je vais la signaler
je peux utiliser des variables de session?? ça fonctionne seulement entre les pages??
apparamment oui
je pense que je vais pas m'ensortir de ce probleme ou plutot de ce viewstate!! je vous explique
c'est vrai mnt que ma variable trouve est sauvegardée mais mnt c'est le prob à l'envers!!
dans le weboform insertion je dois d'abord selectionne une date d'un calendar non figurante dans la liste de controle c'est pour cette raison je fais je ce test "trouve" pour se rassurer que la date selectionnee est bien inexistante dans ma liste de pointage
bref..quand je selectionne une date existente..pas de prob!ça fonctionne tres bien..et j'ai une message d'avertissement pour l'utilisateur mais quand je selectionne une deuxieme fois une date..bien correcte...je viewstate a deja sauvegardé trouve a true!!! donc j'ai la meme generation du message d'avertissement alors que ma date est valide!
je voulais dire que tantot je veux conserer ma variable trouve et tantot je veux la reinitialiser à false
pour renouveller le test
salut! probleme résolu
comme meme c'est pas la meilleur solution mais ça m'arrange
c'est simple, chaque fois que j'affiche un message d'avertissement je mets trouve à false, comme ça dans le prochain test lors de la reselection de la date trouve sera egale a la valeur initiale false
comme ça: