Avatar billede wired Nybegynder
25. oktober 2003 - 22:56 Der er 13 kommentarer og
2 løsninger

XML, XSLT og ASP.NET

Denne er svær...
Jeg har en xml- og en xslt-fil som indlæses fra en aspx-fil ved brug af:

<asp:Xml id="Xml1" runat="server" TransformSource="xsltfil.xslt" DocumentSource="xmlfil.xml" />


Via xslt-filen oprettes linket:
(BEMÆRK: ID er også generet af xslt-filen)

<a id="XLT028273" runat="server" onServerClick="Button1_Click">

Men det virker ikke.

Hvordan får jeg kædet det xslt-genereret <a>-link sammen med min button1_Click sub-rutine i min aspx.vb således at jeg kan se id-nummeret på det link som der er trykket på.

Jeg vurder selv af spørgsmålet er svært derfor det høje antal points. Der er derfor også kun p til en anvendelig løsning.
Avatar billede wired Nybegynder
26. oktober 2003 - 00:04 #1
Jeg kan desværre ikke give flere points...
Avatar billede thor.ostergaard Nybegynder
26. oktober 2003 - 07:34 #2
Hvis du laver dit html tag så det kommer til at se sådan her ud:
<a id="XLT028273" runat="server" href="java script:__doPostBack('XLT028273','')">Klik her</a>
og laver en eventhandler i din .vb fil der ser sådan her ud:
    Private Sub XLT028273_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles XLT028273.ServerClick
        lblTest.Text = "hej med dig"
    End Sub
virker det.

Håber du kan bruge det.
Avatar billede wired Nybegynder
26. oktober 2003 - 10:10 #3
Mange tak men problemet er netop at det er XSLT filen som generere id'et og jeg derfor ikke ved hvad id tag'et har. Jeg havde håbet at kunne se hvem (altså id'et) som sendte til serveren når man klikkede på linket. Jeg kan se at der sendes noget til linket (samt lidt vha. trace) men ikke id'et?
Avatar billede thor.ostergaard Nybegynder
26. oktober 2003 - 10:20 #4
Ja, det anede mig - skal du have en eventhandler til hvert id?
Avatar billede thor.ostergaard Nybegynder
26. oktober 2003 - 10:49 #5
OK - her kommer så lige et lille bud, der måske kan løse dit problem. Som du ser sender doPostBack to parametre - den første er navnet på den eventhandler der skal tage sig af postback'et - det andet kan du bruge til at flytte en parameter mere med over - altså:
java script:__doPostBack('eventhandler','XLT028273')
Når du fra din kode skal trække id nummeret ud kan du bruge:
Request.Form("__Eventargument")

God kamp :-)
Avatar billede thor.ostergaard Nybegynder
28. oktober 2003 - 08:44 #6
Er du kommet videre?
Avatar billede wired Nybegynder
29. oktober 2003 - 10:19 #7
Excellent på rette spor.
Jeg får id'en men det virker ikke som om at id'et er kædet sammen med elementet. Dvs. jeg kan ikke arbejde med elementet, altså ændre indhold eller se indhold af element. Fidusen ved at få id'et var nemlig at jeg derefter skulle kunne arbejde videre med elementet. Så som:

Dim knap As System.Web.UI.HtmlControls.HtmlAnchor
knap.ID = Request.Form("__Eventargument").ToString
knap.visible = True

eller

If Xml1.FindControl(Request.Form("__Eventargument")).Visible = False Then
Avatar billede wired Nybegynder
29. oktober 2003 - 11:18 #8
Men burde det egentlig ikke også være muligt at oprettet linket i .xsl'en?
Noget i stil med:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:asp.net="urn:xsltExtension-asp.net" version="1.0">

og længere ned i stylesheet'et:

<xsl:value-of select="asp.net:System.Web.UI.HtmlControls.HtmlAnchor()" />

Ved det er langt ude men syntes måske at noget af det brude være rigtigt da man kan gøre det med andre xsltExtension's.
Avatar billede thor.ostergaard Nybegynder
29. oktober 2003 - 16:42 #9
Det forstår jeg ikke helt. Testede med denne kode og det virkede fint:
  lblTest.Text = "hej med dig " + Request.Form("__Eventargument")

Og denne kode kører også fint:
        Dim knap As New System.Web.UI.HtmlControls.HtmlAnchor
        knap.ID = Request.Form("__Eventargument")
        knap.InnerText = "Link"
        knap.HRef = "#"
        knap.Visible = True
        PlaceHolder1.Controls.Add(knap)
Avatar billede wired Nybegynder
30. oktober 2003 - 21:15 #10
Jeg er dig meget taknemlig og utrolig glad for din hjælp.

Jeg kan godt oprette en seperat knap/link men jeg vil gerne have at det er den knap som xslt'et oprettede der anvendes - altså:

Request.Form("__Eventargument").InnerText = "HEJ"

dvs. ændre indholdet af knappen med id'et Request.Form("__Eventargument")
ikke en ny knap med id Request.Form("__Eventargument")
Avatar billede thor.ostergaard Nybegynder
31. oktober 2003 - 08:42 #11
Jeg forstår ikke helt - vi laver et link med vores xslt, hvor vi kan angive eventhandler og en parameter. Hvad er det så præcis du vil have den eventhandler til at gøre?
Avatar billede wired Nybegynder
31. oktober 2003 - 14:20 #12
Jeg er såment bare interesseret i at kunne anvende det link som xslt'en laver, på samme måde som hvis det havde været en ASP.NET Webcontrol, altså et <a id="mitlink" onServerClick="mitLinksub"> på en sådan måde at jeg kan skrive:

mitLink.innerHTML = "<B>HEJ</B>"

Ved din hjælp har jeg opnået id'et på HTML-elementet, men jeg kan stadig ikke kæde det sammen med et objekt på asp.net siden.

Dvs. når jeg klikker på linket på siden skal jeg modtage id'et på server-siden(virker nu), men således at jeg kan ændre indholdet på id-objektet fra server-siden(f.eks. ved <id-objekt>.innerHTML="HEJ"), ligesom ved et <asp:anchor> webcontrol.
Avatar billede thor.ostergaard Nybegynder
31. oktober 2003 - 14:32 #13
Det tror jeg ikke kan lade sig gøre - linket bliver jo først skabt i forbindelse med at siden bliver genereret. Jeg tror du skal et par skridt baglæns og overveje om du har valgt den rigtige metode til at løse din udfordring.

Læg mærke til, at de fleste af de ting du kan lave med xslt kan du også lave med xml objektsamlingen i .net.
Avatar billede thor.ostergaard Nybegynder
09. november 2003 - 19:22 #14
Er det ved at være tid til at lukke her?
Avatar billede wired Nybegynder
09. november 2003 - 22:01 #15
Du har fuldstændig ret Thor. Jeg har fundet en løsning. Den indebære at bruge xslt param(eter). Ved at bruge xslt parameter er det muligt at sende variable til og fra asp.net codebehind siden. Men samtidig bruger jeg også din metode med at overføre variabler den ene vej. Jeg giver derfor 100 point og takker mange gange for hjælpen og lige så vigtigt for dialogen.
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