Avatar billede olzen Nybegynder
09. marts 2004 - 11:25 Der er 27 kommentarer og
1 løsning

Hjælp til E-handelsside

Hej alle,

Vi har et problem ang. en e-handelsside vi skal lave. Problemet består i at vi har en forside hvor vi via nogle DataBinder som set her: <%# DataBinder.Eval(Container.DataItem, "pris") %> lister nogle oplysninger fra vores database.

Problemet er så det at vi skal videre til en side med flere detaljer af produktet. Vi skal altså kunne trykke på et link og så skal den føre indholdet fra det givende produkt med over til en ny side. Vi har forsøgt at sende noget videre med denne:

<a href='ProduktDetaljer.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ID") %>'>Læs mere</a>

Men er det overhovedet i retning af hvordan man gør det?

Alle linkene på forsiden linker jo faktisk til den samme side, men alt efter hvilket af linkene der klikkes på skal den næste side jo så hente informationer fra databasen ud fra (via ID) ellers kunne vi jo bare lave lige så mange sider som produkter, men det er jo ikke særlig smart...

Vi har hørt at man måske kan gøre det via "Sessions" men hvordan kan det gøres ?

Det skal siges at vi er rimelige nye i ASP.net og C# så en uddybende forklaring vil være at foretrække...

På forhånd tak...
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:29 #1
<a href="<%#DataBinder.Eval(Container.DataItem, "url1") %>" class="tekstLilleLink2"><%#DataBinder.Eval(Container.DataItem, "text15") %></a>

Her gør jeg det fra et xml dokument.. men det skulle være det samme
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:30 #2
så mit bud ville være

<a href="ProduktDetaljer.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ID")%">Læs mere</a>

Jeg formoder i har det hele i en repeater/datalist/datagrid ?
Avatar billede thor.ostergaard Nybegynder
09. marts 2004 - 11:30 #3
Der er naturligvis flere måder at løse problemet på, men umiddelbart ville jeg overveje at bruge asp.net hyperlink kontrollen i stedet:

<asp:HyperLink id="HyperLink1" runat="server" Target="_blank" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.url") %>'>

Det betyder også at du fra din codebehind fil også kan kode urlen, som du vil have den.
Avatar billede olzen Nybegynder
09. marts 2004 - 11:32 #4
Den url1 hvad skal det så være til ?? og havd er text15?
Er:
<a href="<%#DataBinder.Eval(Container.DataItem, "url1") %>" class="tekstLilleLink2"><%#DataBinder.Eval(Container.DataItem, "text15") %></a>
istedet for vores:
<a href='ProduktDetaljer.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ID") %>'>Læs mere</a>
Avatar billede olzen Nybegynder
09. marts 2004 - 11:32 #5
Sorry.. Hvade ikke set du havde svaret igen.. vi bruger en Datalist
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:33 #6
vil det ikke give problemer mht til idnavn hvis de har flere links
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:35 #7
Olzen >> jeg har på fornemmeren det er et hold multimediedesignere der er igang :).. har jeg ret ?
Avatar billede olzen Nybegynder
09. marts 2004 - 11:35 #8
Hvis det sendes over med f.eks. <a href="ProduktDetaljer.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ID")%">Læs mere</a>

hvordan henter man det så ind på siden ProduktDetaljer.aspx ??
Avatar billede olzen Nybegynder
09. marts 2004 - 11:36 #9
JokkeJensen -> Ligenøjagtig... :-) Også dig eller ??
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:36 #10
det kan du gøre med Request.QueryString["ID"]
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:37 #11
hehehe ja
Avatar billede olzen Nybegynder
09. marts 2004 - 11:37 #12
Lidt mere uddybende tak.. :-) Er ikke helt med på Request.QueryString["ID"]
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:39 #13
så kan du i din kode skrive

<%

string hentetID = Request.QueryString["ID"];

%>

Så får hentetID værdien af det ID der er sendt over.. og du kan bruge det til et nyt udtræk fra databasen
Avatar billede olzen Nybegynder
09. marts 2004 - 11:42 #14
Du får lige vores kode fra ProduktDetaljer:

<script language="C#" runat="server">

    void Page_Load(Object sender, EventArgs e) {

        string hentetID = Request.QueryString["ID"];

        OleDbConnection OurConnection;
        OleDbCommand OurCommand;
        OleDbDataAdapter OurDataAdapter;
   
        DataSet OurDataSet;
        OurDataSet = new DataSet();
       
        OurConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/inetpub/wwwroot/Skole/toej.mdb");
        OurCommand = new OleDbCommand("Select * From toejtabel where id=hentetID",OurConnection);
   
        OurDataAdapter = new OleDbDataAdapter(OurCommand);
   
        OurDataAdapter.Fill(OurDataSet, "toejtabel");
        MyDataList.DataSource = OurDataSet.Tables["toejtabel"].DefaultView;
        MyDataList.DataBind();

    }

</script>
Avatar billede olzen Nybegynder
09. marts 2004 - 11:43 #15
Og så en datalist hvor vi hiver dem ind sådan her: <%# DataBinder.Eval(Container.DataItem, "pris") %>
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:44 #16
OurCommand = new OleDbCommand("Select * From toejtabel where id='"+ hentetID+"'",OurConnection);

prøv den
Avatar billede olzen Nybegynder
09. marts 2004 - 11:45 #17
Så smider den følgende fejl:
Datatyperne stemmer ikke overens i kriterieudtrykket.
Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.Data.OleDb.OleDbException: Datatyperne stemmer ikke overens i kriterieudtrykket
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:46 #18
det er fordi SQL er en tekst streng.. så kan man ikke direkte fylde variabler i den.... det gør man med "TEKST" + variable + "TEKST"
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:46 #19
ok vent
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:47 #20
int hentetID = System.Convert.ToInt32(Request.QueryString["ID"]);


OurCommand = new OleDbCommand("Select * From toejtabel where id="+ hentetID ,OurConnection);
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:48 #21
erstat begge linier
Avatar billede olzen Nybegynder
09. marts 2004 - 11:48 #22
Sådan her eller hvad ?  OurCommand = new OleDbCommand("Select * From toejtabel where id=""+ hentetID +""",OurConnection);
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:49 #23
Nej det var fordi jeg lavede det id i hentede om til en tekst streng.. den kunne åbenbart ikke sammeligne en streng med en integer i databasen...

nu er hentetID et tal
Avatar billede olzen Nybegynder
09. marts 2004 - 11:50 #24
DET VIRKER!!!!! :-) Du er GUD! :-)
Avatar billede olzen Nybegynder
09. marts 2004 - 11:51 #25
Hvis vi skulle rende ind i problemer igen kan vi så få fat på dig på en eller anden måde`? :-)
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:52 #26
Jokke@maritek.dk <- Msn ellers info@jj-multimediedesign.dk til mail
Avatar billede olzen Nybegynder
09. marts 2004 - 11:55 #27
Smid lige et svar, så får du point... :-)
Avatar billede ddobbeltv Nybegynder
09. marts 2004 - 11:55 #28
svar
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