webForumDet fria alternativet

Sessions uppdateras segt

.NET

13 svar · 314 visningar · startad av Smultron

Medlem sedan juli 2002423 inlägg
Frågan#1

Jag använder mig av sessions för att sätta ett datum. När man trycker på en knapp körs en method som först ändrar Sessionen och sedan visar en Web User Control, sessionen ska visas i controlen men det blir sessionens gamla värde, för att den uppdateras segt, trycker man en gång till på knappen visas det nya värdet.

vad är problemet där?!

Medlem sedan okt. 20005 273 inlägg
#2

Du kör din metod som ändrar sessionen i fel ordning.....visa lite kod. :)

mv icaaq

Medlem sedan maj 20012 812 inlägg
#3

Du laddar garanterat in dina controler innan eventet från din knapp är genomförd.

Tänk på att Events processas efter att Page_Load() är processad.

Medlem sedan juli 2002423 inlägg
#4

kod när jag trycker på knappen

		private void cal_sel_day( object sender, System.EventArgs e)
		{
			Session["DagensDatum"] = min_calendar.SelectedDate.ToShortDateString();	
			change_content_panel( "1");
		}

change_content_panel()

			((Panel)Page.FindControl("pnl" + ViewState["panel"].ToString())).Visible = false;
      

			string a = arg;
				((Panel)Page.FindControl("pnl" + a)).Visible = true;
				ViewState["panel"] = a;

i user controlen sätter den Sessionvärdet som en text i en Label.

showDate.Text= Session["DagensDatum"].ToString();

där kan ni se hur jag har gjort, nåt ex. på hur jag ska göra om det?

Medlem sedan maj 20012 812 inlägg
#5

Du har följande kod i din UserControl:

showDate.Text= Session["DagensDatum"].ToString();

Då kommer denna kod att ha exekverats innan du kör följande kod:

			Session["DagensDatum"] = min_calendar.SelectedDate.ToShortDateString();	
			change_content_panel( "1");

För att få det som du vill ha det så måste du sätta showDate.Text efter detta att du har satt din Session["DagensDatum"].

Alltså du kanske gör det i din cal_sel_day funktion:

		private void cal_sel_day( object sender, System.EventArgs e)
		{
			Session["DagensDatum"] = min_calendar.SelectedDate.ToShortDateString();	
			change_content_panel( "1");
//-- Här letar du upp din UserControl och sätter Propertyn ShowDate till DagensDatum.
}

- M

Medlem sedan juli 2002423 inlägg
#6

och tack för svaret ska testa, men jag har för mig att jag testade det förut, men jag ska ge felmeddelandet, om det nu uppstår.

Medlem sedan juli 2002423 inlägg
#7

får felmeddelandet,

An object is required for the nonstatic field, method, or property 'Namespace.Modules.Calendar_Day.showDate'

jag försökte men denna koden

[KOD]
private void cal_sel_day( object sender, System.EventArgs e)
{
Session["DagensDatum"] = min_calendar.SelectedDate.ToShortDateString();
change_content_panel( "1");
Namespace.Modules.calendar_day.showDate.Text= Session["DagensDatum"].ToString();
}

[kod]

hur ska jag skriva för att leta upp den propertyn?, showDate alltså?

Medlem sedan juli 2002423 inlägg
#8

jag gjrode om Labeln, showDate till "public static", då får jag ett helt annat fel, men finns det inget annat sätt än att sätta värdet i en session?

Medlem sedan maj 20012 812 inlägg
#9

An object is required for the nonstatic field, method, or property 'Namespace.Modules.Calendar_Day.showDate'

Nör du refererar till din kalender som du gör, så refererar du inte till ditt kalender objekt, utan till kalender classen.

Om du gör showDate till statik, så kommer denna vara samma för alla dina besökare som din sida, och det vill du nog inte.

När jag menade att du skulle hitta din calender, så menade jag ditt kalender objekt. Typ du använder FindControl() och inte din kalender klass.

- M

Medlem sedan juli 2002423 inlägg
#10

jaha ok thx....ska testa

Medlem sedan juli 2002423 inlägg
#11

jag får ej min FindControl att fungera...

jag gör såhär..

((Label)Page.FindControl("showDate")).Text= Session["DagensDatum"].ToString();

då får jag felmeddelandet :

Object reference not set to an instance of an object.

vad ska jag göra, showDate ligger som en public Label i calendar_day.ascx

Medlem sedan maj 20012 812 inlägg
#12

ShowDate lär ju inte finnas på Page. Du måste hitta din kalender med FindControl. Och sedan gör en FindControl efter din ShowDate på din kalender kontrol.

- M

Medlem sedan juli 2002423 inlägg
#13

hmm...kan du ge exempel på hur jag ska göra??

är inte direkt haj på FindControl metoden...

calendar_day ligger i Modules/

Medlem sedan maj 20012 812 inlägg
#14

Svårt eftersom jag inte vet hur din sida är uppbyggd. Men om jag vill hitta en Label som ligger i en Panel på min sida så kan man skriva så här:

Panel panel = (Panel)Page.FindControl("myPanel");
Label label = (Label) panel.FindControl("myLabel");

Så först letar jag fram min panel, sedan i denna panel så letar jag fram min label.

Jag kan nu ändra texten på label. Genom lable.Text = "Ny Text";

- M

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)