Avatar billede Slettet bruger
08. august 2007 - 15:27 Der er 13 kommentarer og
1 løsning

Ignorer min if-sætning

Har et lille script som meningen er med at den skal vise noget forskelligt alt efter hvad der står i databasen.

Har lidt på fornemmelsen at det er valideringen af min Session som den ignorer, da det kun er panel1 som vises.

Indholdet i "menu" i databasen består af tal fra 0 til hvilket som helst tal, og datatypen er "tekst"
   
<!--Script-->

        Session["menu"] = OurDataReader["menu"].ToString();
    OurConnection.Close();
    OurDataReader.Close();
    if (Session["menu"]!="0")
    {
        panel1.Visible=true;
    panel2.Visible=false;
        panel3.Visible=false;
    }
    else {
    panel1.Visible=false;
    panel2.Visible=false;
    panel3.Visible=true;           
    }
}
Avatar billede Syska Mester
08. august 2007 - 15:35 #1
nogle spm.
1. Hvad indeholder Session["menu"] ? Prøv med enten debug eller Response.Write(Session["menu"]); ?

Som du har lavet det, lader det jo til at Session["menu"] ikke er "0" og derfor går ind i den første del af din if ...

// ouT
Avatar billede kalp Novice
08. august 2007 - 15:42 #2
if (Session["menu"].ToString().Trim() !="0")
Avatar billede softspot Forsker
08. august 2007 - 19:13 #3
alternativt:

if(Convert.ToString(Session["menu"]) != "0")
Avatar billede Slettet bruger
09. august 2007 - 09:04 #4
Hm - må hellere vise hele scriptet...

void Page_Load(Object Sender, EventArgs E) {
    OleDbConnection OurConnection;
    OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.MapPath("db/sideindhold.mdb")+";");
    OurConnection.Open();
    OleDbCommand OurCommand;
    OleDbDataReader OurDataReader;                                                                                         
    OurCommand = new OleDbCommand("SELECT menu, link FROM sider WHERE ID = " + Session["menu"] ,OurConnection);
    OurDataReader = OurCommand.ExecuteReader();
    OurDataReader.Read();
    if(Convert.ToString(Session["menu"]) != "0")
    Session["link"] = OurDataReader["link"].ToString();
    OurConnection.Close();
    OurDataReader.Close();
    if (Session["menu"]!="0")
    {
        panel1.Visible=true;
        panel2.Visible=false;
        panel3.Visible=false;
    }
    else {
    panel1.Visible=false;
    panel2.Visible=false;
    panel3.Visible=true;           
    }
}

Hvis såleder "menu" IKKE er 0 i databasen skal panel1 vises og hvis "menu" ER 0 skal panel3 vises.

Desværre viser den konsekvent kun panel1 HVER gang *suk*

~:]
Avatar billede brian0905 Nybegynder
09. august 2007 - 11:02 #5
igen, som der tidligere er skrevet, hvad er værdien af Sesion["menu"] når den når til den if sætning? prøv at debugge det og se hvad der sker... det kan jo være den er null
Avatar billede Slettet bruger
09. august 2007 - 11:09 #6
Har skam prøvet at udskrevet sessionen "menu" - og den kan som sagt være mellem 0 og op efter. Kun når den er 0 skal den vise panel3. Men den viser kun panel1 uanset hvad - også når den er 0.
Avatar billede softspot Forsker
09. august 2007 - 11:17 #7
Prøv at udskifte denne linie:

    if (Session["menu"]!="0")

med denne linie:

    if(Convert.ToString(Session["menu"]) != "0")
Avatar billede brian0905 Nybegynder
09. august 2007 - 13:35 #8
<quote>- og den kan som sagt være mellem 0 og op efter</qoute>

Ikke helt korrekt, eftersom at Session[""] returnerer et object, kan den være alt mellem hmmel og jord. Det er her jeg tror fejlen er, prøv at lav et breakpoint runtime og se hvad datatypen er ved evt. at undersøge Session["0"] i din "Loal variables" eller lav en watch på den...
Avatar billede kalp Novice
09. august 2007 - 14:14 #9
Hvis din session indeholder en talværdi, som du siger... og du er sikker på den kan være 0 og noget andet... så virker det også med
Kommentar: kalp
08/08-2007 15:42:22
Avatar billede brian0905 Nybegynder
09. august 2007 - 14:37 #10
jepsen, men IMHO kan man ikke lave noget for robust, lav nu det check for null, det tager kun en ekstra eller to liner mere
Avatar billede kalp Novice
09. august 2007 - 20:27 #11
brian0905 >>

et smart tjeck i .NET 2.0

if(!string.IsNullOrEmpty(Session["menu"]))
{

}
Avatar billede Slettet bruger
14. august 2007 - 15:07 #12
Endelig fik jeg scriptet til at virke. Løsningen som hjalp var softspot's: if(Convert.ToString(Session["menu"]) != "0").

Grunden til at den ikke virkede optimalt fra starten var at jeg havde 2 sessions som udlignede hinanden, men som nu er rettet.

Point'ene gik altså til softspot.
Avatar billede softspot Forsker
14. august 2007 - 16:44 #13
Jamen, så må jeg jo hellere smide et svar :)
Avatar billede softspot Forsker
15. august 2007 - 08:19 #14
Tak for point :)
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