Avatar billede jepjo Nybegynder
26. oktober 2004 - 09:08 Der er 8 kommentarer og
1 løsning

DropDownList og SelectedItem

Hej allesammen!
Jeg er forholdsvis ny i asp.net, og har et mindre problem. Jeg er ved at lave en hjemmeside i flere sprog. Jeg tænkte at jeg kunne bruge en dropdowlist til sprogvalget. Da jeg har menuen i en usercontrol i toppen af siden, altså en menu jeg genbruger på alle sider, så vil jeg gemme valget i en session, og hæfte den respektive landekode på alle menuens URL (eks. DA_Home.aspx). Den ønskede effekt er at uanset hvor jeg befinder mig, skal jeg kunne skifte sprog, så jeg lander på samme indhold, bare i et andet sprog.
Jeg håber i forstår hvad jeg mener?! Jeg har forsøgt mig, med at bruge session, men det lader ikke til at virke, og for det andet kan jeg ikke få sat det valg, der som default er valgt i listen. På danske sider dansk, på engelske sider engelsk osv.
Er der nogen der har en ide?

;) Jesper
Avatar billede sw_red_6 Nybegynder
26. oktober 2004 - 10:17 #1
hvordan har du skrevet din session siden det tilsyneladende ikke virker?
Er det i din DropDownList du vil have at der står dansk på danske sider i "for det andet"-delen af dit spørgsmål?
Avatar billede jepjo Nybegynder
26. oktober 2004 - 16:30 #2
Hej sw_red_6!

eks.

Session["Lang"]=DropDownList.SelectedValue.ToString();
// Valuen indeholder DA, EN, GE;

Så har jeg lavet en Page_load sektion, der spørger efter Session:
if(Session["Lang"]).......
    string urlPreFix = Session["Lang"].ToString();

Min Default side er bare en Frame, hvor resten af siden afspilles. I denne frames kode, sætter jeg Session["Lang"]="DA"; Så jeg ikke på noget tidspunkt ender op med en null reference.

Jeg ved ikke hvor fejlen ligger?!

Håber du kan bruge det til noget
Avatar billede jepjo Nybegynder
26. oktober 2004 - 16:36 #3
Hej igen sw_red_6!

For den anden del af mit spm., så vil jeg i dropdownlisten, liste Danish (value DA), English (value EN) og German(Value GE), Da listen ligger i headeren, vil jeg uanset hvilket indhold man er ved at se, altså siderne (home, product osv, have at hvis jeg ændrer sprogvalg, at man får det aktuelle indhold i det valgte sprog, og ikke som man ser det mange steder at man så bare bliver redirected, til det valgte sprogs startside, og så igen skal til at surfe sig frem til det indhold man var kommet til.

Håber det var forklaring nok

:) Jesper
Avatar billede jepjo Nybegynder
26. oktober 2004 - 16:42 #4
Hej igen igen!
Var vist for hurtigt til at forklare, jeg kan se at anden del af spørgsmålet gik på dropdownlistens indhold. Ja, jeg vil gerne have at dropdowlisten har markeret det sprog som siden er på, da jeg skifter side indhold på SelectedItemChanged. Dvs. Er jeg på den Engelske side, og Dansk som default er valgt, bliver det jo lidt svært at vælge dansk, da den allerede er valgt. Jeg gider ikke at have en Button til at styre det.

Håber du har modet til at prøve at hjælpe mig endnu, efter disse tre lange stile.

Tak for tålmodigheden

;)Jesper
Avatar billede sw_red_6 Nybegynder
27. oktober 2004 - 09:07 #5
til 26/10-2004 16:30:44
Har du tjekket indholdet af din session? bare for at være sikker på at det rent faktisk er det rigtige der gemmes.
Hvad sker der siden du mener at din session ikke virker?

til 26/10-2004 16:42:08
Mht dropdownlisten har du prøvet at sætte det valgte sprog som en ny default SelectedItem?

til 26/10-2004 16:36:11
jeg ved ikke om det kan lade sig gøre men kan du ikke tage filens navn og bruge den som basis for en redirect?
noget lignende
if (filnavn == side3) {
  redirect en_side3;
}
Måske en switch hvis du har rigtig mange sider.


hmmm det blev vist ikke i kronolisk rækkefølge men det gør vel ikke noget.
Avatar billede jepjo Nybegynder
27. oktober 2004 - 17:28 #6
1. jeg har lavet en Response.Write på Session["Lang"] og den er der, men når jeg så vil bruge den på den redirectede side, er den væk.

2. Mht til dropdownlisten........ det er netop det jeg gerne vil, men hvordan? skal jeg have fat i ListItem objektet eller kan jeg gøre det med nogle af Dropdownlistens properties?

3. Det lyder som en mulighed, men hvordan får jeg fat i den respektive fils navn? Jeg har tænkt på måske bare at lave en String på hver side, der fortæller sidenavnet uden prefix (en_, da_ eller ge_)
Avatar billede sw_red_6 Nybegynder
28. oktober 2004 - 09:23 #7
1. hvor har du lavet den Response.Write? Jeg vil så også foreslå at du bruger Session["Lang"]=DropDownList.SelectedValue.Text i stedet for .Tostring() når du laver din session.

2. du kan vel "bare" sætte DropDownList.SelectedItem.Text = Session["Lang"] kan du ikke?
evt. noget med:
if (Session["Lang"] == "DA") {
    DropDownList.SelectedItem.Text = "Dansk"; // eller hvordan den nu sætter SelectedItem
}
... selvfølgelig det samme med de andre sprog.
du siger jo at den er der når du tjekker med Response.Write.
Jeg læste på html.dk at man kan sætte SelectedItem på den her måde <asp:ListItem Value="Værdi" Text="Tekst" Selected="True|False"/>

3. jeg ved ikke om det er hastighedsmæssigt klogt at bruge på en HP men jeg har set her på eksperten at det kan lade sig gøre at hente filnavnet med streamwriter/streamreader eller filestream eller noget i den retning.
Jeg tror også det kunne være muligt med FileSystemObject.
Hvis det er for langsomt at gøre det på den måde kan jeg ikke se andre muligheder end at du laver en string med filens navn i starten af din kode så du kan hente det derfra.
Avatar billede jepjo Nybegynder
28. oktober 2004 - 15:16 #8
Tak for hjælpen, jeg må prøve!
Avatar billede sw_red_6 Nybegynder
30. oktober 2004 - 17:01 #9
intet problem, det er vel derfor vi er her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester