Källkoden för /anders.enges/asp/ex3.asp
<!--#include file="../inc/navstuff.asp" -->

<p>En vanlig situation är att vi vill få in föregående/nästa länkar i våra sidor.
Om vi löser detta med traditionell HTML så får vi vissa problem om vi
vill sätta in nya sidor i en sekvens eller om vi vill ändra på den
ordningsföljd sidorna har.</p>
<p>Man kan använda ASP <b>Content Linking</b> för att förenkla detta. <p>
Detta går ut på att man skapar en fil med filnamn och beskrivningar
som sedan hanteras dynamiskt</p>
<p>Ett exempel på en sådan fil kommer nedan</p>
<p><table>
<tr>
<td colspan="3"><hr></td>
</tr>
<%   Set xNextLink = Server.CreateObject ("MSWC.NextLink") %>  
<%   xcount = xNextLink.GetListCount ("../data/intro.txt") %> 
<%   I =2 %>
<%   Do While (I <= xcount) %>  
<tr>
<td><%= xNextLink.GetNthURL ("../data/intro.txt", I) %></td>
<td> </td>
<td><%= xNextLink.GetNthDescription ("../data/intro.txt", I) %></td>
<%   I = (I + 1) %>  
</tr>
<%   Loop %>  
<tr>
<td colspan="3"><hr></td>
</tr>
<tr>
<td colspan="3">d.v.s</td>
</tr>
<tr>
<td>Filnamn  </td><td>Tabulator  </td><td>Förklaringstext  </td>
</tr>
<tr>
<td colspan="3"><hr></td>
</tr>
</table>
</p>
<p>Ovanstående lista blev dynamiskt skapad med följande kod (filen hette <b>intro.txt</b> och fanns i en <b>data</b> katalog:<br>
<div class=code>
<table><br>
<tr><br>
<td colspan="3"><hr></td><br>
</tr><br>
<span class=asp><% Set NextLink = Server.CreateObject ("MSWC.NextLink") <br>
count = NextLink.GetListCount ("../data/intro.txt") <br>
I = 1 <br>
Do While (I <= count) %></span><br>
<tr><br>
<td><span class=asp><%= NextLink.GetNthURL ("../data/intro.txt", I) %></span></td><br>
<td>&nbsp;</td><br>
<td><span class=asp><%= NextLink.GetNthDescription ("../data/intro.txt", I) </td><br>
I = (I + 1) %></span><br>
</tr><br>
<span class=asp><% Loop %></span><br>
<tr><br>
<td colspan="3"><hr></td><br>
</tr><br>
</table><br>
</div>
<p>Man behöver ofta länkar till föregående och nästa:<br>
<FONT COLOR=#0000FF>
<a href="<I>FöregåendeURL</i>"><I>FöregåendeFörklaring</I></a><BR>
<a href="<I>NästaURL</i>"><I>NästaFörklaring</I></a><p>
</p></FONT>
<p>Till exempel<br><FONT COLOR=#0000FF>
<a href="intro1.asp">2. Vad är ASP</a><BR>
<a href="intro3.asp">4. När behöver man ASP?</a><BR>
</FONT>
</p>
<p>Och varför inte lite bilder<br><FONT COLOR=#0000FF>
<a href="<I>FöregåendeURL</i>"><BR>
<IMG SRC="../images/prev.gif" width="21" height="15" border="0"><BR>
<I>FöregåendeFörklaring</I></a><BR>
<a href="<I>NästaURL</i>"><BR>
<IMG SRC="../images/next.gif" width="21" height="15" border="0"><BR>
<I>NästaFörklaring</I></a><p>
</p></FONT>

<p>Följande kod gör dessa länkar automatiskt:
</p>
<p>
<div class=code>
<!-- Skapa förra och nästa länkar med hjälp av Content Linking --><BR>
<span class=asp><%  Set nextdb = Server.CreateObject ("MSWC.NextLink")<br>
listFile = "../data/easy.txt" %></span><BR>
<span class=asp><%  If (nextdb.GetListIndex (listFile) > 1) Then  %></span>  <BR>
<a href="<span class=asp><%  = nextdb.GetPreviousURL (listFile)  %></span>"><BR>
<IMG SRC="../images/prev.gif" width="21" height="15" border="0"><BR>
<span class=asp><%  = nextdb.GetPreviousDescription (listFile)  %></span></a><BR>
<span class=asp><%  End If  %></span><BR>
<a href="<span class=asp><%  = nextdb.GetNextURL (listFile)  %></span>"><BR>
<span class=asp><%  = nextdb.GetNextDescription (listFile)  %></span><br><IMG SRC="../images/next.gif" width="21" height="15" border="0"></a><BR>
<!-- Slut på koden-->
</div>
<div class=res>
<%   Set xnextdb = Server.CreateObject ("MSWC.NextLink")
xlistFile = "../data/easy.txt" %>

<%   If (nextdb.GetListIndex (xlistFile) > 1) Then %>  
<a href="<%   = xnextdb.GetPreviousURL (xlistFile) %>">
<IMG SRC="../images/prev.gif" width="21" height="15" border="0">
<%   = xnextdb.GetPreviousDescription (xlistFile) %></a>
<%   End If %>
<a href="<%   = xnextdb.GetNextURL (xlistFile) %>">
<%   = xnextdb.GetNextDescription (xlistFile) %><IMG SRC="../images/next.gif" width="21" height="15" border="0"></a>
</div><br>
<p>
Raden:<br>
<span class=asp><%  Set nextdb = Server.CreateObject ("MSWC.NextLink")  %></span><BR>
skapar ett objekt av typen <b>Content Linking Component</b> som kan användas för
navigering.<br>
<br>
<span class=asp><%  = nånSlagsAspKod  %></span><BR>
gör att resultatet av ASPkoden sätts in direkt i HTML koden<br>
<dl><b>Content Linking Component</b> komponenten har följande metoder:<br><br>
<dt>GetListCount </dt>
<dd>Räknar antal reder i den fil som används för navigeringen (intro.txt i det här fallet)</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetListCount(<i>listfil</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% count = nextdb.GetListCount("../data/index.txt") %></span> </dd>
</dl>
<br>
<dt>GetNextURL </dt>
<dd>Returnerar URL för nästa rad i navigeringsfilen</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetNextURL(<i>listfil</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% nextFile = nextdb.GetNextURL("../data/index.txt") %></span> </dd>
</dl>
<br>
<dt>GetNextDescription </dt>
<dd>Returnerar förklaringen för nästa rad i navigeringsfilen</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetNextDescription(<i>listfil</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% nextDesc = nextdb.GetNextDescription("../data/index.txt") %></span> </dd>
</dl>
<br>
<dt>GetPreviousURL </dt>
<dd>Returnerar URL för föregående rad i navigeringsfilen</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetPreviousURL(<i>listfil</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% prevFile = nextdb.GetPreviousURL("../data/index.txt") %></span> </dd>
</dl>
<br>
<dt>GetPreviousDescription </dt>
<dd>Returnerar förklaringen för föregående rad i navigeringsfilen</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetPreviousDescription(<i>listfil</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% prevDesc = nextdb.GetPreviousDescription ("../data/index.txt") %></span></dd>
</dl>
<br>
<dt>GetListIndex</dt>
<dd>Returnerar index i navigeringsfilen för den nuvarande filen</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetListIndex(<i>listfil</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% currentIndex = nextdb.GetListIndex("../data/index.txt") %></span></dd>
</dl>
<br>
<dt>GetNthURL </dt>
<dd>Returnerar URL för en viss rad i navigeringsfilen</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetNthURL(<i>listfil</i>, <I>index</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% fileIs = nextdb.GetListCount ("../data/index.txt",2) %></span></dd>
</dl>
<br>
<dt>GetNthDescription </dt>
<dd>Returnerar förklaringen för en viss rad i navigeringsfilen</dd>
<br>
<br>
<dl>
<dt>Syntax:
<dd><i>objekt</i>.GetNthDescription(<i>listfil</i>, <I>index</i>)</dd>
<br>
<dt>Exempel:
<dd><span class=asp><% count = nextdb.GetNthDescription ("../data/index.txt",3) %></span></dd>
</dl>
</dl>
Man kan exempelvis skriva in följande i ASP filen för att skriva ut alla filer<br>
<div class=code>
<span class=asp><%  Set NextLink = Server.CreateObject ("MSWC.NextLink")<BR>
  count = NextLink.GetListCount("../data/ex.txt")<BR>
  I = 1<br>
  Do While (I <= count)  %></span><BR>
<span class=asp><%  = NextLink.GetNthURL("../data/ex.txt", I)  %></span><br><BR>
<span class=asp><%  I = (I + 1)  </span><BR>
<span class=asp>  Loop  %></span><BR>
</div>
<p>
Eller detta för att skriva ut alla beskrivningar<br>
<div class=code>
<span class=asp><%  Set NextLink = Server.CreateObject ("MSWC.NextLink")<BR>
  count = NextLink.GetListCount("../data/ex.txt")<BR>
  I = 1<br>
  Do While (I <= count)  %></span><BR>
<span class=asp><%  = NextLink.GetNthDescription("../data/ex.txt", I)  %></span><br><BR>
<span class=asp><%  I = (I + 1)  </span><BR>
<span class=asp>  Loop  %></span><BR>
</div>
<p>
Varför inte kombinera i hop detta till:<br>
<div class=code>
<ol><br>
<span class=asp><%  Set NextLink = Server.CreateObject ("MSWC.NextLink")  %></span><BR>
<span class=asp><%  count = NextLink.GetListCount("../data/ex.txt")  %></span><BR>
<span class=asp><%  I = 1  %></span><ul><br>
<span class=asp><%  Do While (I <= count)  %></span><BR>
<li><a href=" <span class=asp><%  = NextLink.GetNthURL("../data/ex.txt", I)  %></span>"><BR>
<span class=asp><%  = NextLink.GetNthDescription("../data/ex.txt", I)  %></span></a><BR>
<span class=asp><%  I = (I + 1)  %></span><BR>
<span class=asp><%  Loop  %></span><BR>
</ul><br>
</ol><br>
</div>
<br>
Vilket resulterar i HTML koden:<br>
<div class=res>
<ol><br>
<ul><br>
<%   xcount = xNextLink.GetListCount ("../data/ex.txt") %> 
<%   I = 1 %>
<%   Do While (I <= xcount) %>  
<li><a href="<%= xNextLink.GetNthURL ("../data/ex.txt", I) %>">
<%= xNextLink.GetNthDescription ("../data/ex.txt", I) %>  </a> <br>
<%   I = (I + 1) %>  
<%   Loop %>  
</ul><br>
</ol><br>
</div><p>
Vilket i sin tur ger resultatet:<br>
<div class=res>
<ol>
<%   xcount = xNextLink.GetListCount ("../data/ex.txt") %> 
<%   I = 1 %>
<ul>
<%   Do While (I <= xcount) %>  
<li><a href=" <%= xNextLink.GetNthURL ("../data/ex.txt", I) %>   ">
<%= xNextLink.GetNthDescription ("../data/ex.txt", I) %>   </a>
<%   I = (I + 1) %>  
<%   Loop %>  
</ul>
</ol>
</div>
Denna metod går att kombinera med include. <a href="easy.asp#tab">Se exemplet på detta</a><p>
För dessa sidor används följande konstruktion<p>
<div class=code>
<span class=asp><%@ LANGUAGE="VBSCRIPT" %><br>
<% listFile = "../data/easy.txt" %></span><br>
<font color="#006400"><!--#include file="../inc/navstuff.asp" --></Font>
</div><p>
Där man först sätter default script language. Sedan sägs det vilken listfil som används.
Sedan inkluderas filen <b>navstuff.txt</b> som innehåller koden som går igenom aktuell listfil<p>
<div class=code>
<!-- Skapa förra och nästa länkar med hjälp av Content Linking --><BR>
<span class=asp><%  Set nextdb = Server.CreateObject ("MSWC.NextLink")<br></span>
<span class=asp><%  If (nextdb.GetListIndex (listFile) > 1) Then  %></span>  <BR>
Och så vidare...<p>
</div><p>

<p>Detta gör att när en sida laddas sätts automatiskt rätt listfil<p>
Fördelen med denna metod är att man kan sätta in nya filer i fillistan eller ändra på
förklaringarna. Detta gör att navigeringsordningen kommer att ändras utan att man behöver
skriva om koden i html/asp sidorna</p>

<!--#include file="../inc/footer.asp" -->