Avatar billede c-sharp Nybegynder
09. marts 2006 - 08:16 Der er 28 kommentarer og
2 løsninger

Hjælp til "indkøbskurv"

Jeg skal have lavet en indkøbskurv til en lille web-shop, men jeg er lidt i tvivl om hvordan jeg skal obevare de bestilte vare. Jeg har overvejet en DataTable som jeg vil placere i en session, men er det optimalt?
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 08:20 #1
i asp.net 2.0 kan du bruge profile:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/userprofiles.asp

I asp.net 1.1 vil jeg anbefale dig at opbygge en klasse som indeholder din shopping basket og så smide en instans af denne klasse i en session
Avatar billede c-sharp Nybegynder
09. marts 2006 - 08:51 #2
dr_chaos dejligt at se at du altid er på banen når man har brug for hjælp :-)

Det er i asp.net 2.0 men det er noget af en lang artikel, jeg har fundet koden jeg skal bruge i den, men er lidt i tvivl om det her:

Notice that the AddCartItem method includes code that checks whether or not the ShoppingCart object exists in the Profile. You must instantiate any objects stored in the Profile object yourself. They are not instantiated automatically.


Hvad er det for noget med en profil der skal oprettes ?
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 09:12 #3
det vil sige at: <profile>
    <properties>
    <add
      name="ShoppingCart"
      type="ShoppingCart"
      serializeAs="Binary"
      allowAnonymous="true" />
    </properties>
  </profile>
skal være tilføjet til web.config.

Hvis ikke du på et tidspunkt har gjort
Profile.ShoppingCart = New ShoppingCart();
Sørger additem for det.
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 09:12 #4
Du kan evt bruge
Profile.ShoppingCart = New ShoppingCart();
Når kunden kommer ind på siden.
Avatar billede c-sharp Nybegynder
09. marts 2006 - 11:20 #5
tak for hjælpen det virker som det skal :-) Er det også beregnet til at man gemmer kundens oplysninger (navn, adresse mm) i sammen med kurven?

Også lige et nyt spørgsmål der godt kan gå under samme overskrift :-) jeg forhøjer lige pointne lidt.

Jeg har nu brugt eksemplet fra Microsofts side hvor de bruger et GridView til at vise kurven. Er det muligt at tilføje en linie i bunden af denne hvor man viser "kr. total" og så man kan styre i hvilken kolonne det bliver vist. og hvordan tilgår man en label i gridview?
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 11:52 #6
Lav en metode der returnere et total beløb ved at løbe alle items igennem og vis dette i et label elelr lignende i bunden af skærmen.
Avatar billede c-sharp Nybegynder
09. marts 2006 - 12:02 #7
Det har jeg styr på, men hvordan kan jeg placere denne værdie i mit gridview under de andre beløb?

Altså proppe det her ind i mit gridview:

<tr>
      <td colspan="2">Ialt</td>
      <td><asp:label id="total" runat="Server"/></td>
</tr>
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 12:09 #8
i page load laver du

total.Text = dinudregning af beløb

Dit gridview placeres på denne måde.hvis du ikek har gjort det
<table>
<tr>
      <td><asp:gridview id="ditgridview"></asp:gridview</td>
</tr>
<tr>
      <td colspan="2">Ialt</td>
      <td colspan="2"><asp:label id="total" runat="Server"/></td>
</tr>
</table>
Avatar billede c-sharp Nybegynder
09. marts 2006 - 12:31 #9
Det har jeg også prøvet men mit gridview laver sin egen tabel
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 12:58 #10
så lave et div som har align sat til rigth
Avatar billede c-sharp Nybegynder
09. marts 2006 - 13:56 #11
Men beløbet står ikke helt til højre, det står i 3 kolonne ud af 4 kolonner
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 14:00 #12
hvad har du 4. kolonne ?
Avatar billede c-sharp Nybegynder
09. marts 2006 - 14:03 #13
Jeg har 4 kolonner i mit gridview
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 14:13 #14
så skal du gøre det at du i codebehind tilføjer en række mere.
Altså en gridviewrow r = new GridviewRow.
Her til føjer du celler til og i den 3 celle tilføjer du total beløbet.
Avatar billede c-sharp Nybegynder
09. marts 2006 - 14:44 #15
Det bliver da lidt noget rod, for jeg skal have det til at ligne en faktura...

Det kan være at det er bedre at bruge en repeater?
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 14:48 #16
Tjaa måske men det er ikke sikkert.
Avatar billede snepnet Nybegynder
09. marts 2006 - 15:17 #17
prøv et kolonne som denne:

<asp:TemplateField HeaderText="Blah">
    <ItemTemplate>
        <asp:Label ID="txtlah" runat="server" Text='<%# Eval("Blah") %>'></asp:Label>
    </ItemTemplate>
    <FooterTemplate>
        BLAHHHHH.......
    </FooterTemplate>
</asp:TemplateField>

mvh
Avatar billede snepnet Nybegynder
09. marts 2006 - 15:21 #18
og på griddet:
ShowFooter="True"
mvh
Avatar billede c-sharp Nybegynder
09. marts 2006 - 15:28 #19
Mit Gridview ser ud som følger:

            <asp:GridView
                ID="CartGrid"
                AutoGenerateColumns="false"
                DataKeyNames="ID"
                OnSelectedIndexChanged="RemoveCartItem"
                CellPadding="5"
                Width="400"
                Runat="Server">
                <Columns>
                <asp:TemplateField HeaderText="Antal">
                    <ItemTemplate>                       
                        <asp:textBox
                            id="txt"
                            Text='<%# DataBinder.Eval(Container.DataItem, "Quantity")%>' 
                            Style="width: 30px"
                            runat="Server">
                        </asp:textbox>
                    </ItemTemplate> 
                </asp:templatefield>
                <asp:BoundField
                    DataField="Name"
                    HeaderText="Navn" />
                <asp:BoundField
                    DataField="Price"
                    HeaderText="Pris"
                    DataFormatString="{0:c}" />
                <asp:ButtonField
                    HeaderText="Slet"
                    CommandName="select"
                    Text="Remove" />
                <asp:TemplateField>
                    <FooterTemplate>
                        <asp:Label ID="Label1" runat="Server">Dette er en test</asp:Label>
                    </FooterTemplate>
                </asp:TemplateField>
                </Columns>               
            </asp:GridView>
Avatar billede snepnet Nybegynder
09. marts 2006 - 15:30 #20
<asp:GridView
                ID="CartGrid"
                AutoGenerateColumns="false"
                DataKeyNames="ID"
                OnSelectedIndexChanged="RemoveCartItem"
                CellPadding="5"
                Width="400"
                Runat="Server">
                <Columns>
                <asp:TemplateField HeaderText="Antal">
                    <ItemTemplate>                     
                        <asp:textBox
                            id="txt"
                            Text='<%# DataBinder.Eval(Container.DataItem, "Quantity")%>'
                            Style="width: 30px"
                            runat="Server">
                        </asp:textbox>
                    </ItemTemplate>
                    <FooterTemplate>                     
                        <asp:Label
                            id="lblSum"
                            Text="Her skal du så have summen ind"
                            Style="width: 30px"
                            runat="Server">
                        </asp:Label>
                    </FooterTemplate>
                </asp:templatefield>
                <asp:BoundField
                    DataField="Name"
                    HeaderText="Navn" />
                <asp:BoundField
                    DataField="Price"
                    HeaderText="Pris"
                    DataFormatString="{0:c}" />
                <asp:ButtonField
                    HeaderText="Slet"
                    CommandName="select"
                    Text="Remove" />
                </asp:TemplateField>
                </Columns>             
            </asp:GridView>
Avatar billede snepnet Nybegynder
09. marts 2006 - 15:30 #21
og så skal du så huske at sætte ShowFooter="True"
mvh
Avatar billede c-sharp Nybegynder
09. marts 2006 - 15:36 #22
Så er den vist lige ved at være der :-) men den skal stå under Pris
Avatar billede snepnet Nybegynder
09. marts 2006 - 15:38 #23
nåhh.... sorry - satte det bare ind ved den template der nu var :o)
mvh
Avatar billede c-sharp Nybegynder
09. marts 2006 - 15:49 #24
Så fik vi løst de :-)

I skal  begge have tusind tak for hjælpen!!
Smid nogle svar så får i point på følgende måde:
dr_chaos 30 point
snepnet 30point
Avatar billede snepnet Nybegynder
09. marts 2006 - 16:53 #25
et svar får du her :o)
mvh
Avatar billede dr_chaos Nybegynder
09. marts 2006 - 16:54 #26
svar :)
Avatar billede c-sharp Nybegynder
13. marts 2006 - 09:01 #27
Lige et lille tillægsspørgsmål :-)

kan man ikke lave det så den ikke husker de oplysninger der er gemt i profile efter at man har lukket browseren? Det er jo ikke så smart hvis brugeren sidder et offentligt sted.
Avatar billede c-sharp Nybegynder
13. marts 2006 - 09:52 #28
Nu er der problemer med at bruge det profile. Når jeg kopiere det hele til webserverne virker alt det der har med Profile ikke.
Avatar billede dr_chaos Nybegynder
13. marts 2006 - 18:13 #29
er der asp.net 2.0 på serveren ?
har du lagt dit projekt i roden af webstedet ?
Avatar billede c-sharp Nybegynder
13. marts 2006 - 20:02 #30
Ja og Ja men der er ikke sql2005 på serveren.

Jeg har droppet at bruge Profile og bruger nu istedet en Session, jeg synes det virker mere som jeg gerne vil have det til.
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