none
abcde treview con base de datos RRS feed

  • Pregunta

  •  List<Archivo> archivospadre = new List<Archivo>();
            Archivo archivoRaiz = ArchivoDAO.cargarArchivoRaiz(); //El archivo principal que guarda todos los datos que trajiste desde el archivo DAO
            Archivo archivoSeleccionado;

            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                mostrarArchivosTree(); //Despliega los datos en el árbol, el árbol siempre muestra el mismo conjunto de datos y por ello no necesita recibir argumentos
                mostrarArchivosListaIco(archivoRaiz.Archivos);//Despliega los datos en el ListView, necesita saber que va a mostrar en la lista.
            }

            /*Le pasas una lista de archivos y este método les muestra en el ListView*/
            private void mostrarArchivosListaIco(List<Archivo> archivosMostrar)
            {

                lstvArchivosIco.Clear(); //Solo se limpia el ListView
                lstvArchivosIco.View = View.LargeIcon;
                if (archivosMostrar != null && archivosMostrar.Count() > 0)
                {
                    ImageList imagenes = new ImageList();
                    imagenes.Images.Add(new Bitmap(@"C:\Users\David\Desktop\Taller4_PHV\Nueva carpeta\2015_B_Explorador_Archivos_Plantilla_Taller\2015_B_List_View\Images\ico_Archivo.jpg"));
                    lstvArchivosIco.LargeImageList = imagenes;
                    foreach (Archivo iterArchivo in archivosMostrar)
                    {
                        ListViewItem itemLV = new ListViewItem(Convert.ToString(iterArchivo.Nombre),0);
                        itemLV.Tag = iterArchivo;
                        lstvArchivosIco.Items.Add(itemLV);
                        itemLV.SubItems.Add(iterArchivo.Nombre);
                    }
                }
            }


            /*Muestras los datos de archivoraiz en el TreeView*/
            public void mostrarArchivosTree()
            {
                Archivo archivoRaiz = ArchivoDAO.cargarArchivoRaiz();
                TreeNode nodoRaiz = new TreeNode(archivoRaiz.Nombre);
                nodoRaiz.Tag = archivoRaiz;
                treeDirectorios.Nodes.Add(nodoRaiz);
                if (archivoRaiz.Archivos.Count() > 0)
                    agregarNodos(treeDirectorios.Nodes[0], archivoRaiz.Archivos);
            }

            /*Construye el árbol, y va colocando los hijos en el nodo padre*/
            public void agregarNodos(TreeNode nodoPadre, List<Archivo> archivosHijos)
            {
                foreach (var iterArchivos in archivosHijos)
                {
                    TreeNode nodoHijo = new TreeNode(iterArchivos.Nombre);
                    nodoHijo.Tag = iterArchivos;
                    nodoPadre.Nodes.Add(nodoHijo);
                    if (iterArchivos.Archivos.Count() > 0)
                        agregarNodos(nodoHijo, iterArchivos.Archivos);
                }
            }

            private void treeDirectorios_DoubleClick(object sender, EventArgs e)
            {
                archivoSeleccionado = (Archivo)treeDirectorios.SelectedNode.Tag;//El archivo que escojas del LIstView
                mostrarArchivosListaIco(archivoSeleccionado.Archivos);
            }

            private void treeDirectorios_AfterSelect(object sender, TreeViewEventArgs e)
            {
                archivoSeleccionado = (Archivo)treeDirectorios.SelectedNode.Tag;//El archivo que escojas del LIstView
                mostrarArchivosListaIco(archivoSeleccionado.Archivos);
            }

            private void lstvArchivosIco_DoubleClick(object sender, EventArgs e)
            {
                i = i + 1;
                archivoSeleccionado = (Archivo)lstvArchivosIco.SelectedItems[0].Tag;//El archivo que escojas del LIstView
                mostrarArchivosListaIco(archivoSeleccionado.Archivos);
                archivospadre.Add(archivoSeleccionado);
                //archivoanterior = archivoSeleccionado;

            }

            /*Crea un nuevo archivo a través del menú contextual, fíjate en la llamada al formulario donde ingresas el nombre y en el paso del dato
             * del otro formulario a este */
            private void nuevaCarpetaToolStripMenuItem_Click(object sender, EventArgs e)
            {
                IngresoNombreDirectorio ingreso = new IngresoNombreDirectorio();
                ingreso.ShowDialog();            
                Archivo archivoNuevo = new Archivo(ingreso.NombreDirectorio);

                ArchivoDAO.insertar(archivoNuevo.Nombre, archivoSeleccionado.Id);
                treeDirectorios.Nodes.Clear();
                mostrarArchivosTree();
            }

            /*Cuando requieres agregar un Archivo hijo a un padre*/
            public void agregarArchivo(Archivo padreBuscado, Archivo hijo)
            {
                if (archivoRaiz.Equals(padreBuscado))
                {                
                    archivoRaiz.Archivos.Add(hijo);
                }
                else
                {                
                    Archivo padre = buscarArchivo(archivoRaiz.Archivos, padreBuscado);                
                    padre.Archivos.Add(hijo);
                }
            }
            /*Busca un archivo padre dentro de un conjunto de archivos*/
            public Archivo buscarArchivo(List<Archivo> listaArchivos, Archivo padreBuscado)
            {
                Archivo auxiliar = new Archivo("AUX");
                foreach (var iterArchivo in listaArchivos)
                {               

                    if (auxiliar.Equals(padreBuscado))
                    {                   
                        return auxiliar;
                    }
                    else if (iterArchivo.Equals(padreBuscado))
                    {                   
                        return iterArchivo;
                    }
                    else
                    {
                        if (iterArchivo.Archivos.Count() > 0)
                        {
                            auxiliar = buscarArchivo(iterArchivo.Archivos, padreBuscado);
                        }
                    }
                }
                return auxiliar;
            }

            private void btnAtras_Click(object sender, EventArgs e)
            {
                archivospadre.RemoveAt(Convert.ToInt32(archivospadre.Count())-1);
                if (Convert.ToInt32(archivospadre.LongCount())!=0)
                {
                    archivoanterior = archivospadre.Last();
                    mostrarArchivosListaIco(archivoanterior.Archivos);

                }
                else
                {
                    MessageBox.Show("No hay");

                }
            }

            private void detallesToolStripMenuItem_Click(object sender, EventArgs e)
            {
                lstvArchivosIco.Columns.Clear();
                lstvArchivosIco.View = View.Details;
                ColumnHeader columna0 = new ColumnHeader(0);
                columna0.Text = "id";
                lstvArchivosIco.Columns.Add(columna0);

                ColumnHeader columna1 = new ColumnHeader(1);
                columna1.Text = "Nombre";
                lstvArchivosIco.Columns.Add(columna1);
            }

            private void iconosToolStripMenuItem_Click(object sender, EventArgs e)
            {
                lstvArchivosIco.View = View.List;
            }

    /////////////////////////////////////////

    public static Archivo cargarArchivoRaiz() {
                //Cuando implementes la base, aquí debes leer la base y devolver el archivo raiz con todos sus datos.

                Archivo archivoAux = new Archivo();
                SqlConnection con = miBD.obtenerConexion();
                SqlCommand comando = new SqlCommand("select * from archivos", con);
                SqlDataReader reader = comando.ExecuteReader();
                            if (reader.HasRows)
                {

                    reader.Read();
                        archivoAux.Id = reader.GetInt32(0);
                        archivoAux.Nombre = reader.GetString(1);
                        archivoAux.Archivos = consultarArchivoshijos(archivoAux.Id); 
                     
                }
                return archivoAux;
            }


            public static List<Archivo> consultarArchivoshijos(int ip)
            {
                List<Archivo> archivos = new List<Archivo>();
                SqlConnection con = miBD.obtenerConexion();
                String consulta = "select * from archivos where id_archivo='" + ip + "'";           
                SqlCommand comando = new SqlCommand(consulta, con);
                SqlDataReader reader = comando.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        Archivo auxUser = new Archivo();
                        auxUser.Id = reader.GetInt32(0);
                        auxUser.Nombre = reader.GetString(1);
                        auxUser.Archivos = consultarArchivoshijos(auxUser.Id);
                        archivos.Add(auxUser);
                    }

                }
                return archivos;
            }
            //Cuando crees archivos, modifiques, elimines, debes hacer los métodos que ejecutan esas acciones en la base.

            public static int insertar(String nombre, int id_padre)
            {
                SqlConnection conex = miBD.obtenerConexion();
                String consulta = "insert into archivos values ('" + nombre + "', " + id_padre + ")";
                SqlCommand com = new SqlCommand(consulta, conex);
                return com.ExecuteNonQuery();
            }

                                                                              
    viernes, 19 de febrero de 2016 2:26