På ett webform skapar jag ett antal hyperlinks runtime (i webform.aspx.vb -koden). Därefter måste deras position på formuläret bestämmas, hur gör jag det? Exempel: Har nu lagt till en placeholder och adderat 5 st länkar i denna. Det syns fortfarande ingenting på min sida! Något måste saknas, det behövs väl någon kod som talar om positionen på placeholdern eller länkarna? Varför vill du inte använda aspx-sidan? Det i vart fall det enkla sättet: som sagt, jag vill skriva koden i aspx.vb -modulen därför att url:arna och texten till hyperlänkarna hämtas från en databas via ett dataset, vad jag förstått är det inte så lämpligt att kladda med sådan kod i aspx-sidan som i gamla tider.. Nu förstår jag inte vad du menar. Det är inget kladd som i gamla tider. min dynamiskt skapade länk hllink(i) nedan skall få en url med hjälp av innehåller i ett dataset som nedan: Den enda kod du skall lägga i aspx-sidan är: Du skall INTE lägga nån kod i aspxsidan, som sagts två gånger nu: Ok, nu dyker mina länkar upp på sidan. Men placeholdern (och därmed länkarna) vill inte låta sig flyttas från övre vänstra hörnet på sidan, hur gör man det? Varken med wysiwyg-editorn eller med html-text-editorn kan jag flytta placeholdern Placeholdern lägger du ut där du vill att länkarna skall placeras: tack för hjälpen, nu ser det riktigt prydligt ut!! :)Placera objekt som är skapade runtime
Sv: Placera objekt som är skapade runtime
<code>
Dim h1 As New HyperLink()
With h1
.Text = "Testlänken"
.NavigateUrl = "test.aspx"
End With
PlaceHolder1.Controls.Add(h1)
' Eller lägga till på <table id="testTable" runat="server"...
Dim h2 As New HyperLink()
With h2
.Text = "Länk2"
.NavigateUrl = "Default.aspx"
End With
Dim tr As New HtmlTableRow()
Dim td As New HtmlTableCell()
td.Controls.Add(h2)
tr.Controls.Add(td)
testTable.Controls.Add(tr)
</code>
/TommySv: Placera objekt som är skapade runtime
Obs! Jag vill inte skriva någon html-kod, koden finns i aspx.vb -modulen eftersom url:ar och text till länkarna sätt dynamisktSv: Placera objekt som är skapade runtime
<code>
<asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder>
</code>
Annat alternativ är att helt strunta alla bra grejor du får med ASP.NET och skriv allt själv:
<code>
Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
With writer
.WriteFullBeginTag("html")
.WriteFullBeginTag("body")
.Write("hejhopp")
.WriteEndTag("body")
.WriteEndTag("html")
End With
End Sub
</code>Sv: Placera objekt som är skapade runtime
Sv: Placera objekt som är skapade runtime
Detta lägger du i aspx-sidan för att placera kontrollerna:
<code>
<asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder>
</code>
Det är inget fel att använda aspx-sidan, den koden blir lika kompilerad som övrig kod.
Du lägger dataaccess, uppbyggande av dina dynamiskt skapade kontroller mm "codebehind":
<code>
Dim h1 As New HyperLink()
With h1
.Text = "Testlänken"
.NavigateUrl = "test.aspx"
End With
PlaceHolder1.Controls.Add(h1)
' Eller lägga till på <table id="testTable" runat="server"...
Dim h2 As New HyperLink()
With h2
.Text = "Länk2"
.NavigateUrl = "Default.aspx"
End With
Dim tr As New HtmlTableRow()
Dim td As New HtmlTableCell()
td.Controls.Add(h2)
tr.Controls.Add(td)
testTable.Controls.Add(tr)
</code>
Vad är det som är kladdigt med det?Sv: Placera objekt som är skapade runtime
hllink(i).NavigateUrl = "contact_history.aspx?id=" & dsContact.Tables(0).Rows(i).Item("CONTACT_ID")
Om du tycker att jag skall lägga denna kod i aspx-sidan, hur får jag mitt dataset dit? Sv: Placera objekt som är skapade runtime
<code>
<asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder>
</code>
Den koden använder du för att lägga ut var du vill att länkarna skall ligga i sidan, inget annat.
I codebehind (t ex PageLoad) förutsätter att du först skapat array med Hyperlink objekt:
<code>
Dim h as Hyperlink
For Each h In hlink
Placeholder1.Controls.Add(h)
Next
</code>
eller som verkar mer troligt, direkt från datasetet (förutsätter att du fyllt datasetet):
<code>
Dim row As DataRow
For Each row In ds.Tables(0).Rows
Dim h as New Hyperlink()
h.NavigateUrl = row("CONTACT_ID").ToString()
Placeholder1.Controls.Add(h)
Next
</code>Sv: Placera objekt som är skapade runtime
<code>
<asp:placeholder id="PlaceHolder1" runat="server"></asp:placeholder>
</code>
Skall ligga i aspx-sidan, det är det enda förutom all standardkod med html, form mm som behövs, lägg in din kontroll mellan formtaggarna.
ALL övrig kod ligger i aspx.vb-filen (codebehind-filen)
Hur rent och snyggt som helst.
Du måste ju ha någon form av serverkontroll (div, span, placeholder...) för att kunna skapa dina "kodgenererade" kontroller någonstans.Sv: Placera objekt som är skapade runtime
Sv: Placera objekt som är skapade runtime
<code>
<html>
<body>
<table>
<tr>
<td>I cellen bredvid hamnar alla länkarna</td>
<td><asp:placeholder id="Placeholder1" runat="server" /></td>
</tr>
</table>
</body>
</html>
</code>
så får du kanske göra något för att separera länkarna, t ex:
<code>
Dim row As DataRow
For Each row In ds.Tables(0).Rows
Dim h as New Hyperlink()
h.NavigateUrl = row("CONTACT_ID").ToString()
Placeholder1.Controls.Add(h)
PlaceHolder1.Controls.Add(New HtmlGenericControl("br"))
Next
</code>Sv: Placera objekt som är skapade runtime
/henrik