none
Problema al Recorrer un treeview desde un nodo especifico RRS feed

  • Pregunta

  • Estoy tratando de recorrer un treeview para guardar una copia de una rama en otra copio en el portapapeles un nodo y voy a otro pero en mi ciclo me reconoce los nodos del primer nivel pero los hijos no que sucede les dejo mi codigo es sencillo

    nodocopia = Clipboard.GetData("System.Windows.Form.TreeNode")
          For Each nodo As TreeNode In nodocopia.Nodes
            For Each a As TreeNode In nodo.Nodes
              If MsgBox("Desea Agregar la cuenta " + a.Text, MsgBoxStyle.OkCancel) <> MsgBoxResult.Cancel Then
                If tabla.State = 1 Then tabla.Close()
                tabla.Open("Select * from cuentas where id=" & Val(a.Name) & "", conexion, ADODB.CursorTypeEnum.adOpenStatic)
                If tabla.AbsolutePosition > 0 Then
                  If temp.State = 1 Then temp.Close()
                  temp.Open("select * from cuentas where id= " & Val(nodo.Name) & "", conexion, ADODB.CursorTypeEnum.adOpenStatic)
                  If temp.AbsolutePosition > 0 Then
                    idcuenta = creacuentageneral2008(Val(nodo.Name), temp.Fields("nombre").Value, Mid(temp.Fields("codigo").Value, posininivelstruc(struc, nivelcuenta(struc, temp.Fields("codigo").Value)), lonnivelstruc(struc, nivelcuenta(struc, temp.Fields("codigo").Value))), conexion)
                  End If
                End If
              End If
            Next
          Next

    sábado, 26 de mayo de 2012 17:56

Todas las respuestas

  • pero estas seguro que esto funciona ?

    nodocopia = Clipboard.GetData("System.Windows.Form.TreeNode")

    la verdad es muy rara esa linea

    viendo el tema note que puedes hacer algo como esto

    <p>If Clipboard.GetData("TreeNode") != null Then
    
        Dim pasteNode As TreeNode = DirectCast(Clipboard.GetData("TreeNode"), TreeNode)</p><p><br/></p><p>End If<br/></p>
    

    o sea guardas el objeto que se copia para recuperar el nodo, pero debes castear de un tipo a otro, no veo que hagas eso en tu codigo

    ademas alli abusas de los if anidados, y no veo porque realizar dos For Each si solo insertas los nodos hijos y el nodoq eu se copia

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 26 de mayo de 2012 18:30
  • Cierto abuse de los if cuando se puede hacer en uno y hacerlo recursivo si tiene hijos en un procedimiento pero mi pregunta es por que solo el primer nivel o el primer nodo tiene hijos el segundo nivel ya no osea

    el nodo que viene del clipboard que viene del arbol viene con hijos pero solo el primer nivel si le haces la pregunta al los hijos del primer nivel si tiene hijos dice que no y el ciclo solo sirve para el primer nivel cuando la rama del arbol trae muchos niveles despues

    y sin embargo si solo pegas el nodo que viene del clipboard al nodo seleccionado del arbol no y lo checas en el arbol ya trae todos sus ramas bien pero si trato de recorrerlo para meter esos datos a un procedimiento para bases no

    mira trato de copiar una rama y pegarla en otra pero el arbol lo construye una base de datos y tambien necesito hacer esa copia en la base por eso tengo que recorrer para hacer las inserciones en la base

    domingo, 27 de mayo de 2012 17:33