Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Skapa en treeview med ASP, Javascript och Access - del 1 av 3

Postad 2002-03-07 av Patrik Andersson i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 4245, Betyg: 80%

Förord

Detta är den första av 3 artiklar där målet är att skapa en applikation som som fungerar precis som Treeviewkomponenten från visualasp. Vår applikation kommer att efter artikel 3, se ut som bilden visar till höger. Där man i webbläsaren skapar/redigera mappar och skapar/redigerar bokmärken. I denna första artikel så skall vi läsa upp information från databasen, mapparna, och populera trädet med dessa. Följande lösning går att använda på alla de projekt där man vill visa parent-children relationer. Gästböcker, Forums med mera.
Innehåll
  » Bakgrund
  » Databas-layout
  » Kod del 1
  » Kod del 2
  » Kod del 3
  » Hela sidan
  » Avslutning



Bakgrund

Denna applikation gjorde jag efter önskemål från våra säljare som är ofta är ute hos kund och demar våra system. För att kunna hålla reda på länkar till sidor och dokument så de behövde för att kunna sälja våra system så ville de ha ett system som man kunde komma åt från Internet och som skulle ha samma innehåll oberoende från vilken dator de använde.


Databas-layout

Denna version använder sig av en Access 2000 databas man jag rekomenderar att på produktionsservern använda en SQL server för att öka prestandan.
Vi börjar med endast en tabell, tbl_folders, som ser ut som nedan.

















FältnamnDatatypÖvrigt
folderIDtalPrimär nyckel, räknare
parentFoldertalStandardvärde 0
folderNametextEj Null




Kod del 1

Det första vi gör är att hämta alla mappar som finns i roten. De mappar som har parentFolder = 0


<%@ Language=VBScript%>
<%
'Deklarera variabler
Dim path 'as String
Dim Conn 'as ADODB.Connection
Dim rs 'as ADODB.Recordset
Dim sSQL 'as String
Dim rootCount 'as Integer

'Sökväg till databsen
path = Server.MapPath("dbase/treeview.mdb")

'Skapa ett Connection Objekt
Set Conn=server.createobject("adodb.connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path

'Skapa ett recordset
Set rs = Server.CreateObject("adodb.recordset")

'Hämta alla mappar som är i rotnivå. Det vill säga parentFolder = 0

sSQL = "SELECT * FROM tbl_folders WHERE parentFolder = 0"
rs.Open sSQL,Conn,3

'Hur många mappar finns i roten
rootCount = rs.RecordCount
%>



Kod del 2

Nästa del är en funktion som har till uppgift att hämta alla mappar i aktuell tråd och skriva ut dem. Funktionen har en in-parameter, parentID, som kommer att innhålla den aktiva mappens folderID.


<%
Function expand(parentID)
'Denna funktion tar värdet från parentID(aktiv mapp) som skickas in i funktionen och
'hämta alla childs.

'Deklarera variabler

Dim rsChild 'as ADODB.Recordset
Dim sSQLChild 'as String
Dim intRec 'as Integer
Dim intLoop 'as Integer
Dim parent 'as Integer

'Hämta alla mappar som har aktiv mapp som förälder
sSQLChild = "SELECT * FROM tbl_folders WHERE parentFolder = " & parentID
Set rsChild = Server.CreateObject("adodb.recordset")
rschild.Open sSQLchild,Conn,3

'Hur många mapper innehåller recordsetet
intRec = rschild.RecordCount

intLoop = 1


do until rschild.EOF or rschild.BOF
if parent <> rschild("folderID") Then
Response.Write "
"
end if
if intLoop = intRec Then
if intRec = 0 Then
Response.Write "
" & rschild("FolderName")
else
Response.Write "
" & rschild("FolderName")
end if

call expand(rschild("folderID"))
Response.Write "< /td>< /tr>
"

else

if intRec = 0 Then
Response.Write "< /td> " & rschild("FolderName")
else
Response.Write "< /td> " & rschild("FolderName")
end if

'Vi kaller på denna funktion igen så att vi går ner hela vägen i till sista mappen i denna tråd.
call expand(rschild("folderID"))
Response.Write "< /td>< /tr>< tr>"

end if


intLoop = intLoop + 1
parent = rschild("folderID")
rschild.Movenext
loop

rschild.Close
set rschild = nothing
End function
%>



Kod del 3

Än så länge så har inte funktionen körts. Vi måste kalla på funktionen inom Bodytaggen. Har ni inte använt er av funkioner förut så råder jag er att läsa på om dessa. Kanske jag själv skriver något om dessa.


< body>

<%
i = 1
do until rs.eof or rs.bof
%>

<%
'Nedanstående IF..ELSE ..sats kollar var vi är i loopen och returnerar den rätta bilden och bakgrunden.
if i = rootCount Then
%>

<%else%>
<%if i = 1 Then%>

<%else%>

<%end if%>
<%end if%>


<%
i = i + 1
rs.movenext
loop

rs.Close
set rs = Nothing
Conn.Close
Set Conn = Nothing
%>

<%=rs("folderName")%>

<%
'Kalla på funktionen och skicka med mappen id.
call expand(rs("folderID"))
%>






Hela sidan



<%@ Language=VBScript%>
<%
'Deklarera variabler
Dim path 'as String
Dim Conn 'as ADODB.Connection
Dim rs 'as ADODB.Recordset
Dim sSQL 'as String
Dim rootCount 'as Integer

'Sökväg till databsen
path = Server.MapPath("dbase/treeview.mdb")

'Skapa ett Connection Objekt
Set Conn=server.createobject("adodb.connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path

'Skapa ett recordset
Set rs = Server.CreateObject("adodb.recordset")

'Hämta alla mappar som är i rotnivå. Det vill säga parentFolder = 0

sSQL = "SELECT * FROM tbl_folders WHERE parentFolder = 0"
rs.Open sSQL,Conn,3

'Hur många mappar finns i rooten
rootCount = rs.RecordCount

Function expand(parentID)
'Denna funktion tar värdet från parentID(aktiv mapp) som skickas in i funktionen och
'hämta alla childs.

'Deklarera variabler

Dim rsChild 'as ADODB.Recordset
Dim sSQLChild 'as String
Dim intRec 'as Integer
Dim intLoop 'as Integer
Dim parent 'as Integer

'Hämta alla mappar som har aktiv mapp som förälder
sSQLChild = "SELECT * FROM tbl_folders WHERE parentFolder = " & parentID
Set rsChild = Server.CreateObject("adodb.recordset")
rschild.Open sSQLchild,Conn,3

'Hur många mapper innehåller recordsetet
intRec = rschild.RecordCount

intLoop = 1


do until rschild.EOF or rschild.BOF
if parent <> rschild("folderID") Then
Response.Write ""
end if
if intLoop = intRec Then
if intRec = 0 Then
Response.Write "
" & rschild("FolderName")
else
Response.Write "
" & rschild("FolderName")
end if
call expand(rschild("folderID"))

Response.Write "
"

else

if intRec = 0 Then
Response.Write " " & rschild("FolderName")
else
Response.Write " " & rschild("FolderName")

end if

'Vi kaller på denna funktion igen så att vi går ner hela vägen i till sista mappen i denna tråd.
call expand(rschild("folderID"))
Response.Write ""

end if

intLoop = intLoop + 1
parent = rschild("folderID")
rschild.Movenext
loop

rschild.Close
set rschild = nothing
End function
%>



<%
i = 1
do until rs.eof or rs.bof
%>

<%
'Nedanstående IF..ELSE ..sats kollar var vi är i loopen och returnerar den rätta bilden och bakgrunden.
if i = rootCount Then
%>

<%else%>
<%if i = 1 Then%>

<%else%>

<%end if%>
<%end if%>


<%
i = i + 1
rs.movenext
loop

rs.Close
set rs = Nothing
Conn.Close
Set Conn = Nothing
%>

<%=rs("folderName")%>

<%
'Kalla på funktionen och skicka med mappen id.
call expand(rs("folderID"))
%>





Avslutning

Än så länge så har vi inte gjort något gränssnitt för att skapa mappar i webläsaren utan detta måste just nu ske i databasen.



Om du använt innehållet i databasen som jag skickat med så kommer resultatet att se ut som ovan.

OBS! Glöm inte att IUSR_datornamn måste ha läsrättigheter på Access-filen

Referens: .

Så där! Det var den första av 3 artiklar för att skapa en Treeview applikation. Håll utkik efter nästa artikel. Har ni några frågor så maila mig

Vi hörs och syns
/Putte
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 158
27 952
271 704
1 216
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies