Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Treeview Bug

Status
Not open for further replies.

srollins

Programmer
Joined
Oct 17, 2007
Messages
1
Location
US
I am using this code from that was downloaded from a contributor. It displays nicely except, when the plus/minus is pressed, the first subfolder is the only one that toggles, all its sibling folders remain visible.

Has anyone had this similar problem?

Here is the main page.
================================
<html>
<head>
<title>TreeView</title>
<link rel=stylesheet href='treeview.css'></link>
</head>
</html>

<script language=javascript src='treeview.js'></script>
<!--#include file='treeviewFunctions.asp'-->

<%
set fso = CreateObject("Scripting.FileSystemObject")

vDir = "/foo/"
root = Server.MapPath("datasets") & "\"
set fold = fso.getFolder(root)

' we'll assume that the starting point is not empty
' (has at least one subfolder or one file)

response.write getfoldlink("r0", "r0", fold, vDir)
if fold.subfolders.count > 0 then

' counter
r1c = 0

'loop through all subfolders in starting folder
for each f in fold.subfolders

' another counter
r1c = r1c + 1

' concatenate local/relative path once
sfoldname = root & f.name & "\"
fpath = vDir & f.name & "/"

set cfold = fso.getFolder(sfoldname)
if cfold.subfolders.count > 0 or cfold.files.count > 0 then

' we need to make the folder a tree node
response.Write getfoldlink("r1" & r1c, "r1", cfold, fpath)

' reset counter
r2c = 0

for each sf in cfold.subfolders

' keep track to identify nodes by id
r2c = r2c + 1

' concatenate local/relative path once
sfoldname = root & f.name & "\" & sf.name & "\"
path = vDir & f.name & "/" & sf.name & "/"

' build an identifier for this node
id = "r2" & r1c & "_" & r2c

set sfold = fso.getFolder(sfoldname)
if sfold.files.count > 0 then

' we need to make the folder a tree node
response.Write getfoldlink(id, "r2", sfold, path)
for each fil in sfold.files
response.write getfilelink("r2a", path, fil)
next
response.Write "</div>"
else

' this folder is not an expandable node
response.write getfoldlink("", "r2", sfold, path)
end if
next
for each fil in cfold.files

' show each file in this subfolder
response.write getfilelink("r1a", fpath, fil)
next
response.Write "</div>"
else

' this folder is not an expandable node
response.Write getfoldlink("", "r1", cfold, fpath)
end if
next
end if
for each fil in fold.files

' show the files in the starting folder
response.write getfilelink("r0a", vDir, fil)
next
response.Write "</div>"

set fso = nothing
%>

================================

Then here is the 'treeviewFunctions.asp'
================================
<%
function getfoldlink(d, c, f, p)
if d <> "" then

' needs to be clickable
getfoldlink = "<a href='#' style='cursor:hand' " & _
"onclick='flip(""" & d & """);" & _
"this.blur();return false;'>" & _
"<img id='i" & d & "' class=" & c & _
" src=plus.gif vspace=0 hspace=2 border=0>" & _
"<img src=folder.gif hspace=2 border=0></a> " & _
"<a target=_blank href=" & p & getsftitle(f) & _
">" & f.name & "</a></div><div id='" & d & "'" & _
" display=none style='display:none'>"
else

' can't be clickable
getfoldlink = "<div><img id='i" & d & "' " & _
"class=" & c & " src=plus.gif vspace=0 " & _
"hspace=2 visibility=hidden style='visibility:hidden'>" & _
"<img src=folder.gif hspace=2> <a " & _
"target=_blank href=" & p & getsftitle(f) & _
">" & f.name & "</a></div>"
end if
end function

function getfilelink(c, fold, file)
getfilelink = "<div><img class=" & c & " src=file.gif" & _
" hspace=2> <a href=" & fold & file.name & _
getfiletitle(file) & ">" & file.name & "</a></div>"
end function

function getfiletitle(file)
getfiletitle = " title='Size: " & _
formatnumber(file.size/1024, 2, -1, 0, -1) & _
" kb" & vbCrLf & getDL(file) & "'"
end function

function getsftitle(fold)
getsftitle = " title='" & getsfc(fold) & _
vbCrLf & getfc(fold) & _
vbCrLf & getfs(fold) & _
vbCrLf & getDL(fold) & "'"
end function

function getDL(o)
d = o.dateLastModified
getDL = "Last mod: " & formatdatetime(d, 2) & _
" " & formatdatetime(d, 3)
end function

function getfc(fold)
getfc = fCount(fold.files.count)
end function

function getsfc(fold)
getsfc = sfCount(fold.subfolders.count)
end function

function getfs(fold)
getfs = "Size: " & bToMB(fold.size)
end function

function bToMB(b)
bToMB = formatnumber(b/1024/1024, 2, -1, 0, -1) & " MB"
end function

function fCount(c)
fCount = formatnumber(c, 0, -1, 0, -1) & " file" & _
suffix(c)
end function

function sfCount(c)
sfCount = formatnumber(c, 0, -1, 0, -1) & _
" subfolder" & suffix(c)
end function

function suffix(c)
if c <> 1 then suffix = "s"
end function
%>
=====================================
and the treeview.js
=====================================
function flip(l)
{
if (document.getElementById)
{
var on = (document.getElementById(l).style.display == 'none') ? 1 : 0;
document.getElementById(l).style.display = (on) ? 'block' : 'none';
document.images['i'+l].src = (on) ? 'minus.gif' : 'plus.gif';
}
}

 
Hi and welcome to Tek-Tips.

You are currently in the ASP forum and this is a Javascript question. Start by reading faq222-2244 then post this question in forum216

___________________________________________________________
If you want the best response to a question, please check out FAQ222-2244 first.
'If we're supposed to work in Hex, why have we only got A fingers?'
Drive a Steam Roller
Steam Engine Prints
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top