Control treeView en asp
Tengo un problemón con el control treeView en asp, te cuento. Quiero hacer un Árbol con este control. No le quiero cargar entero al principio porque son muchísimos registros y tarda mucho tiempo. Lo que quiero hacer es cargar el primer nivel, y después en el elemento que hagas doble click se desplieguen sus hijos. Cuando hago doble click tengo que hacer una consulta a la base de datos para obtener los hijos de este elemento. Trabajando con VBScript no me deja hacer la conexión a la base de datos porque no está trabajando del lado del servidor. He intentado hacer lo siguiente pero tengo varios problemas:
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<OBJECT classid="clsid:0713E8A2-850A-101B-AFC0-4210102A8DA7" height=165 id=Arbol style="HEIGHT: 165px; LEFT: 0px; TOP: 0px; WIDTH: 553px"
width=553 VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="14631">
<PARAM NAME="_ExtentY" VALUE="4366">
<PARAM NAME="_Version" VALUE="327682">
<PARAM NAME="HideSelection" VALUE="0">
<PARAM NAME="Indentation" VALUE="1005">
<PARAM NAME="LabelEdit" VALUE="0">
<PARAM NAME="LineStyle" VALUE="0">
<PARAM NAME="PathSeparator" VALUE="\">
<PARAM NAME="Sorted" VALUE="0">
<PARAM NAME="Style" VALUE="7">
<PARAM NAME="ImageList" VALUE="">
<PARAM NAME="BorderStyle" VALUE="0">
<PARAM NAME="Appearance" VALUE="1">
<PARAM NAME="MousePointer" VALUE="0">
<PARAM NAME="Enabled" VALUE="1">
<PARAM NAME="OLEDragMode" VALUE="0">
<PARAM NAME="OLEDropMode" VALUE="0"></OBJECT>
<SCRIPT LANGUAGE="VBSCRIPT">
Sub Arbol_DblClick()
dim elemSel
elemSel = Arbol.SelectedItem.Key
call Expandir_Hijos (elemSel)
end sub
Sub Expandir_Hijos(elemSel)
dim nivel
dim clave
dim pos
dim ceros
dim cadenaceros
dim k
dim nivelhij
dim nivelhijstr
dim poshij
dim BD2
dim rshij
dim sqlhij
dim vozprue
nivel = Cint(Left(elemSel,1)) * 2
clave = mid (elemSel,2,nivel)
ceros = 39 - nivel
cadenaceros = ""
for k = 1 to ceros
cadenaceros = cadenaceros & "0"
next
pos = clave & "%" & cadenaceros
<%
nombrebase="Jurisprudencia"
Set BD2 = Server.CreateObject("ADODB.Connection")
BD2.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='" & nombrebase & "';Data Source=Desar5\segunda"
sqlhij = "SELECT * FROM RESTHE WHERE THEPOS LIKE '" & pos & "'"
Set rshij=Server.CreateObject("ADODB.Recordset")
rshij.Open sqlhij, BD2, adOpenKeyset, adLockOptimistic
%>
nivelhij = Cint(Left(elemSel,1)) + 1
nivelhijstr = " nivelhij "
<%
while rshij.EOF = false
poshij = rshij("THEPOS")
poshij = nivelhijstr & poshij
%>
Arbol.SelectedItem.Expanded = true
Arbol.SelectedItem.EnsureVisible
Arbol.Nodes.Add <%=elemtosel%>, 4, <%=poshij%> , <%=rshij("THEVOZ")%>
<%
rshij.MoveNext
wend
%>
End Sub
</SCRIPT>
<%
dim rs
dim sqlIni
dim ruta
dim des
dim padre
dim ant
dim i
dim BD
dim nombrebase
nombrebase = "Jurisprudencia"
Set BD = Server.CreateObject("ADODB.Connection")
BD.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='" & nombrebase & "';Data Source=Desar5\segunda"
sqlIni = "SELECT * FROM RESTHE WHERE THEPOS LIKE '%00000000000000000000000000000000000000'"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sqlIni, BD, 1, 3
i = 1
While rs.EOF = False
%>
<SCRIPT LANGUAGE="VBSCRIPT">
dim voz
dim clave
voz = "<%=rs("THEVOZ")%>"
clave = "1" & "<%=rs("THEPOS")%>"
Arbol. Nodes. Add,, clave, voz
</Script>
<%
i = i + 1
Rs. MoveNext
Wend
%>
</BODY>
</HTML>
La variable "pos" no me la reconoce el asp porque esta en VBScript, y si lo hago todo en VBScript tengo el problema de la conexión a la BD. He probado de todo y no se como hacerlo. Espero que tengas alguna sugerencia. Gracias de antemano. Un saludo. Juan
PD. Estoy trabajado con Visual InterDev
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<OBJECT classid="clsid:0713E8A2-850A-101B-AFC0-4210102A8DA7" height=165 id=Arbol style="HEIGHT: 165px; LEFT: 0px; TOP: 0px; WIDTH: 553px"
width=553 VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="14631">
<PARAM NAME="_ExtentY" VALUE="4366">
<PARAM NAME="_Version" VALUE="327682">
<PARAM NAME="HideSelection" VALUE="0">
<PARAM NAME="Indentation" VALUE="1005">
<PARAM NAME="LabelEdit" VALUE="0">
<PARAM NAME="LineStyle" VALUE="0">
<PARAM NAME="PathSeparator" VALUE="\">
<PARAM NAME="Sorted" VALUE="0">
<PARAM NAME="Style" VALUE="7">
<PARAM NAME="ImageList" VALUE="">
<PARAM NAME="BorderStyle" VALUE="0">
<PARAM NAME="Appearance" VALUE="1">
<PARAM NAME="MousePointer" VALUE="0">
<PARAM NAME="Enabled" VALUE="1">
<PARAM NAME="OLEDragMode" VALUE="0">
<PARAM NAME="OLEDropMode" VALUE="0"></OBJECT>
<SCRIPT LANGUAGE="VBSCRIPT">
Sub Arbol_DblClick()
dim elemSel
elemSel = Arbol.SelectedItem.Key
call Expandir_Hijos (elemSel)
end sub
Sub Expandir_Hijos(elemSel)
dim nivel
dim clave
dim pos
dim ceros
dim cadenaceros
dim k
dim nivelhij
dim nivelhijstr
dim poshij
dim BD2
dim rshij
dim sqlhij
dim vozprue
nivel = Cint(Left(elemSel,1)) * 2
clave = mid (elemSel,2,nivel)
ceros = 39 - nivel
cadenaceros = ""
for k = 1 to ceros
cadenaceros = cadenaceros & "0"
next
pos = clave & "%" & cadenaceros
<%
nombrebase="Jurisprudencia"
Set BD2 = Server.CreateObject("ADODB.Connection")
BD2.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='" & nombrebase & "';Data Source=Desar5\segunda"
sqlhij = "SELECT * FROM RESTHE WHERE THEPOS LIKE '" & pos & "'"
Set rshij=Server.CreateObject("ADODB.Recordset")
rshij.Open sqlhij, BD2, adOpenKeyset, adLockOptimistic
%>
nivelhij = Cint(Left(elemSel,1)) + 1
nivelhijstr = " nivelhij "
<%
while rshij.EOF = false
poshij = rshij("THEPOS")
poshij = nivelhijstr & poshij
%>
Arbol.SelectedItem.Expanded = true
Arbol.SelectedItem.EnsureVisible
Arbol.Nodes.Add <%=elemtosel%>, 4, <%=poshij%> , <%=rshij("THEVOZ")%>
<%
rshij.MoveNext
wend
%>
End Sub
</SCRIPT>
<%
dim rs
dim sqlIni
dim ruta
dim des
dim padre
dim ant
dim i
dim BD
dim nombrebase
nombrebase = "Jurisprudencia"
Set BD = Server.CreateObject("ADODB.Connection")
BD.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog='" & nombrebase & "';Data Source=Desar5\segunda"
sqlIni = "SELECT * FROM RESTHE WHERE THEPOS LIKE '%00000000000000000000000000000000000000'"
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sqlIni, BD, 1, 3
i = 1
While rs.EOF = False
%>
<SCRIPT LANGUAGE="VBSCRIPT">
dim voz
dim clave
voz = "<%=rs("THEVOZ")%>"
clave = "1" & "<%=rs("THEPOS")%>"
Arbol. Nodes. Add,, clave, voz
</Script>
<%
i = i + 1
Rs. MoveNext
Wend
%>
</BODY>
</HTML>
La variable "pos" no me la reconoce el asp porque esta en VBScript, y si lo hago todo en VBScript tengo el problema de la conexión a la BD. He probado de todo y no se como hacerlo. Espero que tengas alguna sugerencia. Gracias de antemano. Un saludo. Juan
PD. Estoy trabajado con Visual InterDev
1 Respuesta
Respuesta de smunoz
1