webForumDet fria alternativet

Hyperlänk i en Datalist

.NETur .NET

10 svar · 323 visningar · startad av sanne

Medlem sedan apr. 200531 inlägg
Frågan#1

Hejsan!

Jag vill ha en hyperlänkar i min datalist, men vet inte hur jag gör. Jag vill göra en sida där man skriver namnet på sidan och den skall vara länkad till en hyperlänk. Någon som kan ge mig en kod eller hjälpa mig på traven. Har nu denna datalist:

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">

Sub Page_Load(sender As Object, e As EventArgs)
   Dim myConnection As SqlConnection
   Dim myCommand As SqlDataAdapter
   ' Create a connection to the "pubs" SQL database located on the
   ' local computer.
      myConnection = New SqlConnection("server=sql1.webmatrixhosting.net,1441;UID=kulturen;PWD=busteriloveyou;Initial Catalog=H_kulturen;")
   ' Connect to the SQL database using a SQL SELECT query to get all
   ' the data from the "notistabell" table.
   myCommand = New SqlDataAdapter("SELECT \* FROM notistabell", myConnection)
   ' Create and fill a DataSet.
   Dim ds As DataSet = new DataSet()
   myCommand.Fill(ds)
   ' Bind MyDataList to the DataSet. MyDataList is the ID for
   ' the DataList control in the HTML section of the page.
   MyDataList.DataSource = ds
   MyDataList.DataBind()
End Sub

</script>
<html>
<head>
<link href="textmall.css" type="text/css" rel="stylesheet" /><%-- Display the data. -%>
</head>
<body>
<p>
</p>
<div id="Layer3" style="Z-INDEX: 2; LEFT: 577px; WIDTH: 150px; POSITION: absolute; TOP: 210px; HEIGHT: 154px"><%-- Open the DataList control and set it for two columns, to be
filled in horizontal order. --%>
<ASP:DataList id="MyDataList" runat="server" Width="112px" BackColor="White" RepeatColumns="1" RepeatDirection="Horizontal" CellPadding="0">
<ItemTemplate>
<div>
<div style="padding:1,1,1,1;font-size:8pt;font-family:Arial;">
<div style="font:9pt Arial;color:black">
<b><%# DataBinder.Eval(Container.DataItem, "webpagetitle")%></b></b>
</div>
<br />
<%# DataBinder.Eval(Container.DataItem, "webpagebody") %>
<p></p>
</div>
</ItemTemplate>
</ASP:DataList>
</div>
<p>
</p>
</body>
</html>

Medlem sedan juni 2000504 inlägg
#2
HyperLinkColumn hlc = new HyperLinkColumn();
hlc.NavigateUrl = "nånsida.aspx"; //eller kolla intellisensen efter nåt bättre kanske? :)
MyDataList.Controls.Add(hlc);

Eller..? vet inte om jag förstod hur du menade att man skulle skriva namnet o att den på nåt sätt skulle kopplas till hyperlänken..?

Medlem sedan apr. 200531 inlägg
#3

Tackar för att du svarade, men vart sätter jag in den koden någonstans i min kod? Behöver lite vägledning då jag är väldigt ny inom asp.net området.

Tusen tack för hjälpen!

Mvh Sanne

Medlem sedan juni 2000504 inlägg
#4

hejsan.. jag tror att det är okay så länge du gör det före DataBind(), t.ex.

HyperLinkColumn hlc = new HyperLinkColumn();
hlc.NavigateUrl = "nånsida.aspx"; 
/* eller om du binder mot databas så kan du ha */
hlc.DataNavigateUrlField = "hclkolumn"; 
/* plus andra grejer du kan lägga till hlc om du vill */
MyDataList.Controls.Add(hlc);

MyDataList.DataSource = ds
MyDataList.DataBind()

och sen i "HTML" delen av din kod lägger du till nåt i den här stilen (om namnen på filerna loopas fram ur databas.. fast jag förstod som sagt inte riktigt hur du menade... :) )

<asp:TemplateColumn> 
   <ItemTemplate> 
       <a href='<%# DataBinder.Eval(Container, "DataItem.hclkolumn")%>'><%# DataBinder.Eval(Container, "DataItem.hclkolumn")%></a>
   </ItemTemplate> 
</asp:TemplateColumn>

mellan t.ex de här taggarna

</ItemTemplate>
</ASP:DataList>

kankse nån annan kan fylla i lite mer här.. är ganska nybörjare själv... :) sök annars eventuellt lite på Google efter HyperLinkColumn och tutorial tills vidare så kommer det kanske nåt bra exempel..

Medlem sedan apr. 200531 inlägg
#5

Hejsan igen!
Tusen tack för hjälpen! Jo ,jag har sökt på google för att försöka hitta mer om detta, men tyvärr så finns det inte så mycket lättare tutorials för oss nybörjare ute på nätet....synd! Får detta felmedelande nu:
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30451: Name 'hlc' is not declared.

Source Error:

Line 18: ' Bind MyDataList to the DataSet. MyDataList is the ID for
Line 19: ' the DataList control in the HTML section of the page.
Line 20: hlc.DataNavigateUrlField = "hclkolumn";
Line 21: /* plus andra grejer du kan lägga till hlc om du vill */
Line 22: MyDataList.Controls.Add(hlc);

--------

Min kod ser nu ut så här:

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">

Sub Page_Load(sender As Object, e As EventArgs)
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
' Create a connection to the "pubs" SQL database located on the
' local computer.
myConnection = New SqlConnection("server=sql1.webmatrixhosting.net,1441;UID=xxxxx;PWD=xxxxx;Initial Catalog=H_kulturen;")
' Connect to the SQL database using a SQL SELECT query to get all
' the data from the "notistabell" table.
myCommand = New SqlDataAdapter("SELECT \* FROM notistabell", myConnection)
' Create and fill a DataSet.
Dim ds As DataSet = new DataSet()
myCommand.Fill(ds)
' Bind MyDataList to the DataSet. MyDataList is the ID for
' the DataList control in the HTML section of the page.
hlc.DataNavigateUrlField = "hclkolumn";
/\* plus andra grejer du kan lägga till hlc om du vill \*/
MyDataList.Controls.Add(hlc);

MyDataList.DataSource = ds
MyDataList.DataBind()

End Sub

</script>
<html>
<head>
<link href="textmall.css" type="text/css" rel="stylesheet" /><%-- Display the data. -%>
</head>
<body>
<p>
</p>
<div id="Layer3" style="Z-INDEX: 2; LEFT: 577px; WIDTH: 150px; POSITION: absolute; TOP: 210px; HEIGHT: 154px"><%-- Open the DataList control and set it for two columns, to be
filled in horizontal order. --%>
<ASP:DataList id="MyDataList" runat="server" CellPadding="0" RepeatDirection="Horizontal" RepeatColumns="1" BackColor="White" Width="112px">
<ItemTemplate>
<asp:TemplateColumn runat="server">
<ItemTemplate>
<a href='<%# DataBinder.Eval(Container, "DataItem.hclkolumn")%>'><%# DataBinder.Eval(Container, "DataItem.hclkolumn")%></a>
</ItemTemplate>
</asp:TemplateColumn>
<div>
<div style="padding:1,1,1,1;font-size:8pt;font-family:Arial;">
<div style="font:9pt Arial;color:black">
<b><%# DataBinder.Eval(Container.DataItem, "webpagetitle")%></b></b>
</div>
<br />
<%# DataBinder.Eval(Container.DataItem, "webpagebody") %>
<p></p>
</div>
</ItemTemplate>
</ASP:DataList>
</div>
<p>
</p>
</body>
</html>

Någon mer som kan hjälpa mig lösa mitt problem och få min datalista att hämta länkarna i min DB?

Mvh Sanne

Medlem sedan juni 2000504 inlägg
#6

tror du glömde

HyperLinkColumn hlc = new HyperLinkColumn();

som du kan lägga innan du använder hlc...

sen så där det står "hlckolumn" så skriver du namnet på den kolumn i din databas som innehåller namnen på sidlänkarna som du vill ha med (om jag inte tar fel).

Om du kör VS.NET så kan du efter att ha skapat HyperLinkColumn med new operatorn trycka på punkt.. om du får upp en intellisense med alla metoder etc. så har du gjort rätt.. annars så kanske du måste använda nån import sats högst upp.. (jag brukar prova så iaf :) )

oj.. såg precis att du använde VB..

Så jag antar att man skriver

Dim hlc as HyperLinkColumn 'bredvid dina andra Dim

o sen kan du skriva hlc = new HyperLinkColumn precis ovanför där du börjar använda hlc...

Medlem sedan apr. 200531 inlägg
#7

Hejsan!
Har jag gjort rätt nu, se min kod:

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">

Sub Page_Load(sender As Object, e As EventArgs)
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
Dim hlc as HyperLinkColumn
' Create a connection to the "pubs" SQL database located on the
' local computer.
myConnection = New SqlConnection("server=sql1.webmatrixhosting.net,1441;UID=xxx;PWD=xxx;Initial Catalog=xxx;")
' Connect to the SQL database using a SQL SELECT query to get all
' the data from the "notistabell" table.
myCommand = New SqlDataAdapter("SELECT \* FROM notistabell", myConnection)
' Create and fill a DataSet.
Dim ds As DataSet = new DataSet()
myCommand.Fill(ds)
' Bind MyDataList to the DataSet. MyDataList is the ID for
' the DataList control in the HTML section of the page.
hlc = new HyperLinkColumn
hlc.DataNavigateUrlField = "testtabell";
/\* plus andra grejer du kan lägga till hlc om du vill \*/
MyDataList.Controls.Add(hlc);

MyDataList.DataSource = ds
MyDataList.DataBind()

End Sub

</script>
<html>
<head>
<link href="textmall.css" type="text/css" rel="stylesheet" /><%-- Display the data. -%>
</head>
<body>
<p>
</p>
<div id="Layer3" style="Z-INDEX: 2; LEFT: 577px; WIDTH: 150px; POSITION: absolute; TOP: 210px; HEIGHT: 154px"><%-- Open the DataList control and set it for two columns, to be
filled in horizontal order. --%>
<ASP:DataList id="MyDataList" CellPadding="0" RepeatDirection="Horizontal" RepeatColumns="1" BackColor="White" Width="112px" runat="server">
<ItemTemplate>
<asp:TemplateColumn runat="server">
<ItemTemplate>
<a href='<%# DataBinder.Eval(Container, "DataItem.hclkolumn")%>'><%# DataBinder.Eval(Container, "DataItem.hclkolumn")%></a>
</ItemTemplate>
</asp:TemplateColumn>
<div>
<div style="padding:1,1,1,1;font-size:8pt;font-family:Arial;">
<div style="font:9pt Arial;color:black">
<b><%# DataBinder.Eval(Container.DataItem, "webpagetitle")%></b></b>
</div>
<br />
<%# DataBinder.Eval(Container.DataItem, "webpagebody") %>
<p></p>
</div>
</ItemTemplate>
</ASP:DataList>
</div>
<p>
</p>
</body>
</html>

---mvh Sanne

Medlem sedan juni 2000504 inlägg
#8

vet inte, ser väl bra ut (har inte testat iofs.. ) kanske ska vara new HyperLinkColumn() (med parentes) o sen då att din kolumn som ska användas för hcl i din testtabell heter hclkolumn (de ska ha samma namn iaf)

prova o kompilera o se vad som händer.. :)

Medlem sedan apr. 200531 inlägg
#9

Nej, det verkar inte funka....får felmedelenade igen...
Vad tror du att felet är? Har ju gjort en SQL tabell som heter testtabell och i den har jag: ID som är nyckeln och står på int, Linktitle som är sitens namn och står på char och sist har jag hclkolumn som är url:n och valde text.

Nu ser min kod ut så här:

<%@ Page Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="server">

Sub Page_Load(sender As Object, e As EventArgs)
Dim myConnection As SqlConnection
Dim myCommand As SqlDataAdapter
Dim hlc as HyperLinkColumn
' Create a connection to the "pubs" SQL database located on the
' local computer.
myConnection = New SqlConnection("server=sql1.webmatrixhosting.net,1441;UID=xxx;PWD=xxx9;Initial Catalog=xxx;")
' Connect to the SQL database using a SQL SELECT query to get all
' the data from the "notistabell" table.
myCommand = New SqlDataAdapter("SELECT \* FROM testtabell", myConnection)
' Create and fill a DataSet.
Dim ds As DataSet = new DataSet()
myCommand.Fill(ds)
' Bind MyDataList to the DataSet. MyDataList is the ID for
' the DataList control in the HTML section of the page.
hlc = new HyperLinkColumn()
hlc.DataNavigateUrlField = "hclkolumn";
/\* plus andra grejer du kan lägga till hlc om du vill \*/
MyDataList.Controls.Add(hlc);

MyDataList.DataSource = ds
MyDataList.DataBind()

End Sub

</script>
<html>
<head>
<link href="textmall.css" type="text/css" rel="stylesheet" /><%-- Display the data. -%>
</head>
<body>
<p>
</p>
<%-- Open the DataList control and set it for two columns, to be
filled in horizontal order. --%>
<ASP:DataList id="MyDataList" runat="server" Width="112px" BackColor="White" RepeatColumns="1" RepeatDirection="Horizontal" CellPadding="0">
<ItemTemplate>
<asp:TemplateColumn runat="server">
<ItemTemplate>
<a href='<%# DataBinder.Eval(Container, "DataItem.hclkolumn")%>'><%# DataBinder.Eval(Container, "DataItem.hclkolumn")%></a>
</ItemTemplate>
</asp:TemplateColumn>
<div>
<div style="padding:1,1,1,1;font-size:8pt;font-family:Arial;">
<div style="font:9pt Arial;color:black">
<b><%# DataBinder.Eval(Container.DataItem, "webpagetitle")%></b></b>
</div>
<br />
<%# DataBinder.Eval(Container.DataItem, "webpagebody") %>
<p></p>
</div>
</ItemTemplate>
</ASP:DataList>
<div>
</div>
<p>
</p>
</body>
</html>

-----------

Tack på förhand!

mvh Sanne

Medlem sedan juni 2000504 inlägg
#10

Jag ber om ursäkt för mitt tidigare inlägg och hoppas att det inte orsakat alltför stora problem... :r Jag läste inte ordentligt.. du hade ju en DataList... inte en DataGrid... DataList har inte .Columns.Add()... jag är på väg hem nu men nån annan kanske kan komma med nåt bra förslag..

sen såg jag att du körde mot webmatrixhosting.. ibland kan det vara strul med sånt också.. kör du mot en lokal IIS också eller laddar du upp vartefter till hosting företaget o testar så..?

Ta med felmeddelandet också kanske som du får när du kompilerar... :) Ber om ursäkt igen att jag inte läste nogrannare första gångerna.. sen tycker jag själv att det är rätt svårt att koda utan VS.NET eftersom man inte har tillgång till intellisense utan isf måste leta på MSDN hela tiden efter vilka metoder osv som finns.. vissa skolor har tillgång till en Academic license för VS.NET som då är gratis om jag inte har fel.. o sen om man köper vissa böcker från MS finns det också för under 1000 kr.. om man nu vill gå så långt.. (offtopic iofs)

Nu är jag nybörjare själv som sagt o har inte jobbat med datalist på det sättet.. annars kanske man skapar en <td> o lägger till en vanlig href... alternativt att du provar o använda Datagrid.. hoppas det löser sig iaf :)

Medlem sedan apr. 200531 inlägg
#11

Hejsan!
Gör inget, sånt som händer. Jag testkör i programmet Web Matrix som har en egen inbyggd server och det är där jag får felmedeladena.

Jo, jag hoppas jag kommer på en lösning. Hoppas på att någon annan har lust att hjälpa mig att fixa ihop en datalista där ´länkar ifrån en MS SQL DB hämtar texten och länkarna.

Någon som har lust att hjälpa en nybörjare?

Mvh Sane

147 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)