S Smultron Medlem sedan juli 2002 423 inlägg Frågan 16 feb. 2004 14:09 #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?!
I icaaq Medlem sedan okt. 2000 5 273 inlägg Du kör din metod som ändrar sessionen i fel ordning.....visa lite kod. :)
mv icaaq
G Gladh Medlem sedan maj 2001 2 812 inlägg 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.
S Smultron Medlem sedan juli 2002 423 inlägg 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?
G Gladh Medlem sedan maj 2001 2 812 inlägg 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
S Smultron Medlem sedan juli 2002 423 inlägg 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.
S Smultron Medlem sedan juli 2002 423 inlägg 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å?
S Smultron Medlem sedan juli 2002 423 inlägg 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?
G Gladh Medlem sedan maj 2001 2 812 inlägg
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
S Smultron Medlem sedan juli 2002 423 inlägg 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
G Gladh Medlem sedan maj 2001 2 812 inlägg 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
S Smultron Medlem sedan juli 2002 423 inlägg hmm...kan du ge exempel på hur jag ska göra??
är inte direkt haj på FindControl metoden...
calendar_day ligger i Modules/
G Gladh Medlem sedan maj 2001 2 812 inlägg 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