Avatar billede schram Nybegynder
23. maj 2008 - 14:27 Der er 4 kommentarer og
2 løsninger

Contentfunktion skal vises i Masterpage m. C#

Hej..
Jeg har lavet en hjemmeside med Masterpage i asp.net C#.

I min ContentPlaceHolder1 har jeg lavet indkøbsfunktion med en "Læg i kurv" knap.
Jeg vil gerne at når man klikker på læg i kurv opdateres min label uden for ContentPlaceHolder (altså i masterpage) med antal vare.

Jeg kan fint få det til at virke hvis jeg køre det hele i en almindelig aspx side.

Men så snart jeg prøver at hente inde data ud fra Content til Masterpage får jeg fejlen "does not exist in the current context".

Hvordan kan dette løses?
Avatar billede kimiwan Nybegynder
23. maj 2008 - 15:35 #1
Er det fra din læg-i-kurv-eventhandler, at du prøver at opdatere masterpage labellen?

Hvor gemmer du data om, hvad der ligger i kurven?

/Kim
Avatar billede schram Nybegynder
23. maj 2008 - 15:42 #2
Ja det er det.. og det hele kører bare i session.
Avatar billede schram Nybegynder
23. maj 2008 - 15:45 #3
Denne kode bruges ved "læg i kurv" knappen.. (contentplaceholder)
Så har jeg lagt de labels den skriver ud i i masterpage. (lblUd.Text, lblPris.Text, lblPrisTotal.Text)

Koden på "læg i kurv":

        Button Button1 = (Button)o;
        GridViewRow grdRow = (GridViewRow)Button1.Parent.Parent;
        Session["ProduktNavn"] += "<br>" + grdRow.Cells[1].Text;
        Session["Pris"] += "<br>" + grdRow.Cells[2].Text + " " + "kr";
        Session["Nummer"] += "<br>" + grdRow.Cells[0].Text;

        lblUd.Text = Convert.ToString(Session["ProduktNavn"]);
        lblPris.Text = Convert.ToString(Session["Pris"]);

        //EN INT DER TÆLLER ANTAL VARER OP OG VISER DET
        // initiering af en hjælpevariabel
        int intHjaelpeTaeller = 0;

        // Hvis det er første køb, sættes antalvarer til 1
        if (Session["AntalVarer"] == null)
        {
            Session["AntalVarer"] = 1;
        }
        else
        {
            // Sessionsvariablen konverteres til integer og tælles op
            intHjaelpeTaeller = Convert.ToInt16(Session["AntalVarer"]);
            intHjaelpeTaeller++;
            // Værdien gemmes i sessionsvariablen igen
            Session["AntalVarer"] = intHjaelpeTaeller;
        }
        // udskrivning af antalvarer købt
        lblAntalUd.Text = Convert.ToString(Session["AntalVarer"]);

        //EN TÆLLER DER TÆLLER OP OG LÆGGER SAMMEN I KURVEN
        int intPris = 0;
        int intPrisIalt = 0;
        intPris = Convert.ToInt16(grdRow.Cells[2].Text);

        if (Session["PrisTotal"] != null)
        {

            intPrisIalt = Convert.ToInt16(Session["PrisTotal"]);
            intPrisIalt += intPris;
            Session["PrisTotal"] = intPrisIalt;
        }
        else
        {
            Session["PrisTotal"] = intPris;

        }


        lblPrisTotal.Text = Convert.ToString(Session["PrisTotal"]) + " kr";
Avatar billede kimiwan Nybegynder
23. maj 2008 - 16:19 #4
Okay, fint... så skal du hellere sætte din sidste linje (lblPrisTotal.Text = Convert.ToString(Session["PrisTotal"]) + " kr";) ind i masterpage onload eventhandleren i stedet.

Husk at rette den til, så den håndterer de tilfælde korrekt, hvor der ikke er noget i kurven.

På den måde gør du de to dele uafhængige af hinanden, og det bliver meget lettere at vedligeholde siden.
Avatar billede ieconfig Nybegynder
24. maj 2008 - 00:06 #5
placere <%@ MasterType VirtualPath="~/MasterPage.master" %> i din aspx side, så har du tilgang til din MasterPages offentlige egenskaber. I disse kan du sætte din label.

F.eks
public string LabelOnMasterPage
{
  get { return Label1.Text; }
  set { Label1.Text = value; }
   
}

så kan du tilgå den fra din aspx sider med Master.LabelOnMasterPage
Avatar billede schram Nybegynder
14. oktober 2008 - 10:38 #6
luk
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