Avatar billede lokkedue Nybegynder
14. januar 2008 - 14:43 Der er 45 kommentarer og
1 løsning

Hvilken knap blev trykket på, på sidste side

Hej

Jeg har en side med nogle forskellige kategorier som bliver hentet fra en database ind i en tabel. kategorierne bliver så lavet til link, der alle sammen linker til samme side, som så skal loade nogle forskellige ting fra databasen, alt efter hvilken knap der bliver trykket på.
Begge sider er skrevet i asp.net, og databasen er access.
Så mit spørgsmål er, hvordan kan jeg få den nye side til at vide hvilken knap man har trykket på? håber der er et klogt hoved der ved det :)
Avatar billede nielle Nybegynder
14. januar 2008 - 18:08 #1
Du kan evt. gøre det sådan her:

    protected void Button1_Click(object sender, EventArgs e)
    {
        Videre(sender);
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        Videre(sender);
    }

    protected void Button3_Click(object sender, EventArgs e)
    {
        Videre(sender);       
    }

    protected void Videre(object sender)
    {
        string buttonId = (sender as Button).ID;

        string url = "SideNr2.aspx?buttonId=" + buttonId;
        Response.Redirect(url);
    }
Avatar billede nielle Nybegynder
14. januar 2008 - 18:09 #2
En anden måde kunne være at gemme værdien af buttonId i en session.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 19:06 #3
Tak for svaret. men hvordan skal jeg sætte det ind i koden jeg allerede har?
Her er koden jeg bruger til at oprette forbindelsen til databasen og få det skrevet ud i en tabel med 3 kolonner og bliver selv fyldt op efter hvad der står i databasen. den nye side skal så kunne hente forskellige ting fra databasen alt efter hivlken kategori der bliver klikket på ved hjælp af ID nr.

<%@ Page Language="VB" debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>
<link rel="stylesheet" href="/style.css""
  <link rel="stylesheet" href="style.css" type="text/css">
<script runat="server">

  Sub Page_Load()
    Dim i = 0
    Dim strConnection as String
    Dim strSQL as String
    Dim objConnection as OledbConnection
    Dim objCommand as OledbCommand
    strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\db\database.mdb"
    objConnection = New OledbConnection(strConnection)
    objConnection.Open
    strSQL = "SELECT * FROM kategorier"
    objCommand = New OleDbCommand(strSQL, objConnection)
    Dim myReader As OleDbDataReader = objCommand.ExecuteReader()
    response.Write("<table border=""0"" align=""center"" class=""body"">")
   
        While myReader.read
    response.Write("<td>")   
    response.Write("<form action="">")
    response.Write("<a href=nyside.aspx><input type=""button"" & Server.Mappath & (""\images\knap.jpg"")"" height=""50"" class=""body"" value="+ myReader.GetString(1).toString() +"></a>")
   
    response.Write("</form>")
    i = i+1
    response.Write("</td>")
    if i Mod 3 = 0 then
    response.write("<tr>")
    end if
    End While
    response.Write("</table>")   

  End Sub
</script>
Avatar billede nielle Nybegynder
14. januar 2008 - 19:17 #4
Du henter id'et med:

string id = Request.QueryString["buttonId"];
Avatar billede lokkedue Nybegynder
14. januar 2008 - 19:40 #5
det har jeg prøvet at sætte ind på den nye side, men den kan ikke hente dataene derfra..
Avatar billede nielle Nybegynder
14. januar 2008 - 19:50 #6
Hvordan ser din kode da ud?
Avatar billede lokkedue Nybegynder
14. januar 2008 - 19:53 #7
på den nye side?
Avatar billede nielle Nybegynder
14. januar 2008 - 19:54 #8
Den hvor at du prøver at hente id via QueryString.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 20:09 #9
indtil videre har jeg ikke skrevet så meget på den nye side. jeg ville først få den til at skrive kanppens navn ud ved hjælp af response.write, men det kan jeg ikke få den til.. kan du hurtigt stykke koden sammen så det kan hentes?
Skal der skrives noget på siden den skal hentes fra?
Avatar billede nielle Nybegynder
14. januar 2008 - 20:10 #10
Skal den udskrives på den nye side, eller den gamle side - den hvor knapperne er på?
Avatar billede lokkedue Nybegynder
14. januar 2008 - 20:15 #11
den skal udskrives på den nye side så jeg kan bruge navnet på den til at hente data fra databasen alt efter kategori fra databasen. knapperne på hovedsiden linker alle sammen til samme side, men skal hente forskellige data, men det er først senere det kommer
Avatar billede nielle Nybegynder
14. januar 2008 - 20:19 #12
<script runat="server">
        Sub Page_Load()
            Dim buttonId As String = Request.QueryString("buttonId")
            Response.Write("ID på den trykkede knap: " & buttonId)
           
            ' ...           
        End Sub
    </script>
Avatar billede lokkedue Nybegynder
14. januar 2008 - 20:31 #13
den kommer kun frem med "ID på den trykkede knap: " når jeg kører den..

jeg har ændret ("buttonId") til ("knap") og ID'et på hovedsiden er knap..
Avatar billede nielle Nybegynder
14. januar 2008 - 20:34 #14
Jamen det skal du ikke.

Hvis du kigger på koden i 14/01-2008 18:08:46 så bliver værdien af id'et smækket bag i url'et og med nøglen buttonId. Derfor skal den også hentes under navnet buttonId fra QueryString.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 20:36 #15
der sker heller ikk noget andet hvis jeg bare kører koden som du har skrevet den, så prøvede at skrive knap i stedet for ButtonId
Avatar billede nielle Nybegynder
14. januar 2008 - 20:38 #16
Hvordan ser koden ud på siden du sender fra?
Avatar billede lokkedue Nybegynder
14. januar 2008 - 20:41 #17
<%@ Page Language="VB" debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>
<link rel="stylesheet" href="/style.css""
  <link rel="stylesheet" href="style.css" type="text/css">
<script runat="server">

  Sub Page_Load()
    Dim i = 0
    Dim strConnection as String
    Dim strSQL as String
    Dim objConnection as OledbConnection
    Dim objCommand as OledbCommand
    strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\db\database.mdb"
    objConnection = New OledbConnection(strConnection)
    objConnection.Open
    strSQL = "SELECT * FROM kategorier"
    objCommand = New OleDbCommand(strSQL, objConnection)
    Dim myReader As OleDbDataReader = objCommand.ExecuteReader()
    response.Write("<table border=""0"" align=""center" class=""body"">")
 
        While myReader.read
    response.Write("<td>") 
    response.Write("<form action="">")
    response.Write("<a href=nyside.aspx><input type=""button"" & Server.Mappath & (""\images\knap.jpg"")"" height=""50" class=""body"" id=""knap"" value="+ myReader.GetString(1).toString() +"></a>")
 
    response.Write("</form>")
    i = i+1
    response.Write("</td>")
    if i Mod 3 = 0 then
    response.write("<tr>")
    end if
    End While
    response.Write("</table>") 

  End Sub
</script>
Avatar billede nielle Nybegynder
14. januar 2008 - 20:41 #18
Det der er da ikke siden med knapperne?
Avatar billede nielle Nybegynder
14. januar 2008 - 20:44 #19
Eller retter sagt ... det er det måske. Men hvorfor bruger du ikke ASP kontroller?

Inder alle omstændigheder skal hver af dine knapper have et unikt id. De må ikke hedde "knap" alle sammen.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 20:48 #20
det er fordi det er en opgave jeg skal lave i forbindelse med min uddannelse, og der skulle vi helst lave det i asp.net, men det kan også være i asp hvis det er lettere at gøre det der.
så kan jeg vel godt kalde knappens id for "+ myReader.GetString(1).toString() +", ligesom value?
Avatar billede nielle Nybegynder
14. januar 2008 - 20:51 #21
Det der er nu ikke "rigtig" ASP.Net. Det er i stedet en sjov blanding af Classic AS og ASP.Net.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 20:53 #22
hmm okay lyder underligt synes jeg. mine lærere har nemlig hjulpet med en del af del..
men hvordan får man det så til at virke med alm. asp?
Avatar billede nielle Nybegynder
14. januar 2008 - 21:01 #23
Det er kodet i ASP.Net og bruger bestemt ting fra denne platform. Men det er mest af alt kodet som om at det var almindeligt ASP+VBScript.

Jeg synes godt nok også at det lyder underligt, hvis det er sådan at jeres lærer lære jer det. :^|


> men hvordan får man det så til at virke med alm. asp?

Almindelig ASP eller almindelig ASP.Net?
Avatar billede lokkedue Nybegynder
14. januar 2008 - 21:03 #24
lyder underligt.. det ku være jeg lige sku ta en snak med dem i morgen :D

hmm, det skal vel være asp.net, for at jeg ikke skal skrive det hele om, det har jeg ikke lige så meget lyst til nemlig..
Avatar billede nielle Nybegynder
14. januar 2008 - 21:06 #25
Det kode, du allerede har vist, skal nu skrives helt om hvos di skal være rigtig ASP.Net. Jeg ved ikke om du har så meget andet kode end det?
Avatar billede lokkedue Nybegynder
14. januar 2008 - 21:07 #26
jo, den side jeg har pastet koden ind fra, er en side der bliver loadet i en iframe. men kan du hjælpe med at skrive den i rigtig asp.net så den kan det samme som det den kan nu?
Avatar billede nielle Nybegynder
14. januar 2008 - 21:13 #27
Jeg skal forsøge ... selv om jeg er lidt hæmmet af at jeg ikke har adgang til en Access database her.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 21:15 #28
mange tak for det.
har du office installeret? for hvis du har, er der deres northwind database der ligger sammen med programmet..
Avatar billede nielle Nybegynder
14. januar 2008 - 21:17 #29
Nej jeg bruger sel Open Office. Og selv hvis jeg havde Office var det nu ikke sikkert at Access er med i pakken - Office sælges i forskellige varianter.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 21:28 #30
nå ja det er rigtigt..
jeg har fundet en sample database:
http://www.microsoft.com/downloads/details.aspx?FamilyId=7A50205E-A29B-4A43-8508-78E549ECD14C&displaylang=en
den indeholder bl.a. en tabel der hedder tblCustomers..
Avatar billede lokkedue Nybegynder
14. januar 2008 - 21:30 #31
Men det kræver jo så du bruger Windows, ved jeg ikk om du gør..
Avatar billede nielle Nybegynder
14. januar 2008 - 21:56 #32
Det går nok.

Et spørgsmål: Skal det være knapper, eller kunne det også være noget andet som f.eks. links?
Avatar billede lokkedue Nybegynder
14. januar 2008 - 22:08 #33
okay, bare i orden.
det skal helst være knapper, så det ser lidt bedre ud..
Avatar billede nielle Nybegynder
14. januar 2008 - 22:23 #34
Det kunne se sådan her ud ...
Avatar billede nielle Nybegynder
14. januar 2008 - 22:23 #35
Side1.aspx:

<%@ Page Language="VB" %>

<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <asp:Repeater ID="myRepeater" runat="server">
        <HeaderTemplate>
            <table border="0" align="center" class="body">
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <form action="Side2.aspx?itemId=<%# DataBinder.Eval(Container.DataItem, "id") %>" method="post">
                        <input type='submit' class='body' value='<%# DataBinder.Eval(Container.DataItem, "ditFelt1") %>'>
                    </form>
                </td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
            </table>
        </FooterTemplate>
    </asp:Repeater>

    <script runat='server'>
        Sub Page_Load()
            If Not IsPostBack Then
                Me.myRepeater.DataSource = GetData()
                Me.myRepeater.DataBind()
            End If
        End Sub
       
        Function GetData() As DataSet
            Dim connStr As String = "Data Source=dataexpe-dfocde;Initial Catalog=Eksperten;Integrated Security=SSPI;"
            Dim sql = "SELECT id, ditFelt1 FROM e814593"
           
            Dim adapter As SqlDataAdapter = New SqlDataAdapter(sql, connStr)
           
            Dim ds As DataSet = New DataSet()
           
            adapter.Fill(ds)
           
            GetData = ds
        End Function
    </script>

</body>
</html>
Avatar billede nielle Nybegynder
14. januar 2008 - 22:24 #36
Side2.aspx

<script runat="server">
                Sub Page_Load()
                    Dim itemId As String = Request.QueryString("itemId")
                    Response.Write("ID på den trykkede knap: " & itemId)
                End Sub
            </script>
Avatar billede nielle Nybegynder
14. januar 2008 - 22:27 #37
Lidt forklaring:

Jeg har brugt SQL Server i stedet for Access - du skal selvfølgelig rette koden til at bruge OleDb i stedet for SqlClient.

Derudover har jeg forsøgt at efterligne din egen kode så meget som muligt. Selv om koden er kommet et godt stykke så er den dog ikke helt "rigtig" ASP.Net i den viste form.
Avatar billede lokkedue Nybegynder
14. januar 2008 - 22:28 #38
mange tak for det, det ser lovende ud :)
jeg kan lige se om jeg kan få det til at virke
Avatar billede lokkedue Nybegynder
14. januar 2008 - 22:31 #39
læste først din sidste kommentar efter jeg skrev før.. tror jeg venter til i morgen med at se om det virker så, hvis det kører sql, for det skal helst køre access, da hele databasen allerede er skrevet i der..

Men indtil videre tusind tak for hjælpen :)
og så skal du selvfølgelig nok få en masse point i morgen når det forhåbentligt virker
Avatar billede nielle Nybegynder
14. januar 2008 - 22:36 #40
Det er nu hurtigt at rete til at bruge Acces - bare lav en søg-og-erstat på SqlClient og erstat med OleDb. Og såt så din egen connection string ind.
Avatar billede lokkedue Nybegynder
15. januar 2008 - 12:01 #41
tak, nu har jeg fået det til at virke
Avatar billede nielle Nybegynder
15. januar 2008 - 14:17 #42
Så hvorfor tager du så pointene selv?
Avatar billede lokkedue Nybegynder
15. januar 2008 - 14:27 #43
jeg har ikke prøvet det her før, så det er ikke med vilje hvis jeg har gjort det.. hvordan får du dine point, for det skal du selvfølgelig have
Avatar billede nielle Nybegynder
15. januar 2008 - 16:51 #44
Jamen velkommen til. Det er altid rart med noget nyt blod her på Eksperten. :^)

Du bør gøre dig selv en tjeneste at læse disse to om hvordan man egentlig bruger Eksperten:

http://www.eksperten.dk/enyt.phtml?id=164
http://www.expfaq.dk/

- og selvfølgelig også denne her:

http://www.eksperten.dk/regler.phtml


Mht. det konkret problem så er der denne her metode, som også kan anvedes her:

http://www.expfaq.dk/giv_flere_point#giv_flere_point
Avatar billede lokkedue Nybegynder
15. januar 2008 - 17:14 #45
jo tak for det :)
jeg opretter lige et nyt spørgsmål med point til dig, som jeg kan se mange andre også har gjort..
Avatar billede vejmand Juniormester
15. januar 2008 - 18:37 #46
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