PRIMER FORMULARIO
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Taller4_Directorios
{
public partial class Form1 : Form
{
private MiBD mibase = new MiBD();
private string nuevo;
Directorio directorioSeleccion;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
agregarImagenesListview();
mostrarArchivosTree();
}
private void mostrarArchivosTree()
{
Directorio dirPadre = new Directorio();
List<Directorio> directorioLista = new List<Directorio>();
var consulta1 = from archivoRaiz in mibase.directorio
where archivoRaiz.id_padre == null
select archivoRaiz;
foreach (var iter in consulta1)
{ dirPadre=iter; }
TreeNode nodoRaiz = new TreeNode(dirPadre.nombre);
nodoRaiz.Tag = dirPadre;
treeDirectorios.Nodes.Add(nodoRaiz);
var consulta2 = from archivo in mibase.directorio
where archivo.id_padre == dirPadre.id
select archivo;
foreach (var iter in consulta2)
{
directorioLista.Add(iter);
}
agregarNodos(treeDirectorios.Nodes[0], directorioLista);
}
private void agregarNodos(TreeNode nodoPadre, List<Directorio> directoriosHijo)
{
try
{
List<Directorio> directorioLista2 = new List<Directorio>();
foreach (var iter in directoriosHijo)
{
TreeNode nodoHijo = new TreeNode(iter.nombre);
nodoHijo.Tag = iter;
nodoPadre.Nodes.Add(nodoHijo);
var consulta2 = from dirHijo in mibase.directorio
where dirHijo.id_padre == iter.id
select dirHijo;
foreach (var iterHijo in consulta2)
{
directorioLista2.Add(iterHijo);
agregarNodos(nodoHijo, directorioLista2);
directorioLista2.Clear();
}
}
}
catch (Exception)
{ }
}
public void agregarArchivo(Directorio padreBuscado, Directorio hijo)
{
Directorio directorioBuscado = new Directorio();
List<Directorio> directorioLista = new List<Directorio>();
var consulta3 = from archivoRaiz in mibase.directorio
//where archivoRaiz.id_padre == null
select archivoRaiz;
foreach (var iter in consulta3)
{
directorioBuscado = iter; directorioLista.Add(iter);
if (directorioBuscado.Equals(padreBuscado))
{
Console.WriteLine("Archivo padre localizado:" + directorioBuscado);
Directorio insertarDir = new Directorio();
insertarDir.nombre = hijo.nombre;
insertarDir.id_padre = padreBuscado.id;
mibase.directorio.InsertOnSubmit(insertarDir);
mibase.SubmitChanges();
}
}
//if (directorioBuscado.Equals(padreBuscado))
//{
// Console.WriteLine("Archivo padre localizado:" + directorioBuscado);
// Directorio insertarDir = new Directorio();
// insertarDir.nombre = hijo.nombre;
// insertarDir.id_padre = padreBuscado.id;
// mibase.directorio.InsertOnSubmit(insertarDir);
// mibase.SubmitChanges();
//}
//else
//{
// Console.WriteLine("Estructura iterada:");
// Console.WriteLine(directorioBuscado);
// Directorio padre = buscarArchivo(directorioLista, padreBuscado);
// Console.WriteLine("Valor final de archivo padre:" + padre);
// hijo.id_padre = padre.id;
// mibase.directorio.InsertOnSubmit(hijo);
// mibase.SubmitChanges();
//}
}
public Directorio buscarArchivo(List<Directorio> listaArchivos, Directorio padreBuscado)
{
Directorio auxiliar = new Directorio("AUX");
List<Directorio> directorioLista = new List<Directorio>();
var consulta3 = from archivoRaiz in mibase.directorio
select archivoRaiz;
foreach (var iter in consulta3)
{
directorioLista.Add(iter);
}
foreach (var iterArchivo in listaArchivos)
{
Console.WriteLine(iterArchivo);
if (auxiliar.Equals(padreBuscado))
{
Console.WriteLine("Archivo padre localizado:" + auxiliar);
return auxiliar;
}
else if (iterArchivo.Equals(padreBuscado))
{
Console.WriteLine("Archivo padre localizado:" + iterArchivo);
return iterArchivo;
}
else
{
if (directorioLista.Count() > 0)
{
auxiliar = buscarArchivo(directorioLista, padreBuscado);
}
}
}
return auxiliar;
}
//Metodos para llenar el ListView
private void agregarImagenesListview()
{/*
ImageList imagenes = new ImageList();
// imagenes.Images.Add(new Bitmap(@"E:\EPN\sexto\phv\PHV\ListView1_TreeView1\ListView1\Imagenes\carpeta.jpg"));
//imagenes.Images.Add(new Bitmap(@"E:\EPN\sexto\phv\PHV\ListView1_TreeView1\ListView1\Imagenes\documento2.JPG"));
imagenes.Images.Add(new Bitmap(@"C:\Users\Sony\Desktop\Taller4_finalPHV\ListView1\ListView1\Imagenes\triste.JPEG"));
imagenes.Images.Add(new Bitmap(@"C:\Users\Sony\Desktop\Taller4_finalPHV\ListView1\ListView1\Imagenes\tulipan.JPEG"));
lstvDirectorios.LargeImageList = imagenes;
*/
}
private void mostrarListaIco(List<Directorio> archivos)
{
try
{
lstvDirectorios.View = View.LargeIcon;
lstvDirectorios.Items.Clear();
foreach (Directorio iterArchivo in archivos)
{
ListViewItem itemLista = new ListViewItem(Convert.ToString(iterArchivo.nombre), 0);
itemLista.Tag = iterArchivo;
lstvDirectorios.Items.Add(itemLista);
itemLista.SubItems.Add(iterArchivo.nombre);
}
}
catch (Exception)
{ }
}
private void traerHijos(Directorio archivoH)
{
var consultaDir = from selDirLis in mibase.directorio
where selDirLis.id_padre == archivoH.id
select selDirLis;
lstvDirectorios.Items.Clear();
foreach (var iterDir in consultaDir)
{
ListViewItem itemLista = new ListViewItem(iterDir.nombre, 1);
itemLista.Tag = iterDir;
lstvDirectorios.Items.Add(itemLista);
itemLista.SubItems.Add(iterDir.nombre);
}
}
private void mostrarHijos()
{
try
{
Directorio archivoSel = (Directorio)lstvDirectorios.SelectedItems[0].Tag;
this.Text = archivoSel.nombre;
traerHijos(archivoSel);
}
catch (Exception ex)
{ }
}
private void atras()
{
try
{
//directorioSeleccion = (Directorio)lstvDirectorios.SelectedItems[0].Tag;
List<Directorio> directorioLista = new List<Directorio>();
var consultaDir = from selDirLis in mibase.directorio
where selDirLis.id_padre ==1
select selDirLis;
foreach (var iter in consultaDir)
{ directorioLista.Add(iter); }
mostrarListaIco(directorioLista);
}
catch (Exception)
{ }
}
// eventos
private void nuevoDir_Click(object sender, EventArgs e)
{
FrmCrearNuevo crearNuevo = new FrmCrearNuevo(nuevo);
crearNuevo.ShowDialog();
directorioSeleccion = (Directorio)treeDirectorios.SelectedNode.Tag;
Directorio archivoNuevo = new Directorio(crearNuevo.NuevoArchivo);
agregarArchivo(directorioSeleccion, archivoNuevo);
treeDirectorios.Nodes.Clear();
mostrarArchivosTree();
}
private void treeDirectorios_AfterSelect(object sender, TreeViewEventArgs e)
{
directorioSeleccion = (Directorio)treeDirectorios.SelectedNode.Tag;
List<Directorio> dirListaSeleccion = new List<Directorio>();
var consultaDir = from dirP in mibase.directorio
where dirP.id_padre == directorioSeleccion.id
select dirP;
foreach(var iterDir in consultaDir)
{
dirListaSeleccion.Add(iterDir);
}
mostrarListaIco(dirListaSeleccion);
}
private void lstvDirectorios_MouseDoubleClick(object sender, MouseEventArgs e)
{
mostrarHijos();
}
private void btnAtras_Click(object sender, EventArgs e)
{
atras();
}
}
}
==========================FRM CREAR NUEVO========================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Taller4_Directorios
{
public partial class FrmCrearNuevo : Form
{
private string nuevoArchivo;
public string NuevoArchivo
{
get { return nuevoArchivo; }
set { nuevoArchivo = value; }
}
public FrmCrearNuevo()
{
InitializeComponent();
}
public FrmCrearNuevo(string nuevo)
{
InitializeComponent();
this.nuevoArchivo = nuevo;
}
private void btnGuardar_Click(object sender, EventArgs e)
{
nuevoArchivo = @"\" + txtNuevo.Text;
this.Close();
}
private void FrmCrearNuevo_Load(object sender, EventArgs e)
{
}
}
}
================================DIRECTORIO============================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq.Mapping;
using System.Data.Linq;
namespace Taller4_Directorios
{
[Table(Name="directorio")]
public class Directorio
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert )]
public int id {get; set;}
[Column]
public String nombre { get; set; }
[Column]
public int? id_padre { get; set; }
//[Column]
//public byte imagen { get; set; }
public Directorio()
{ }
public Directorio(String iniNombre)
{ this.nombre = iniNombre; }
public override string ToString()
{
return nombre;
}
}
public class directorioJerarquia
{
public int id { get; set; }
public String nombre { get; set; }
public byte imagen { get; set; }
public List<directorioJerarquia> directorioHijo { get; set; }
}
}
==========================JERARQUIA DIRECTORIO========================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
namespace Taller4_Directorios
{
class JerarquiaDirectorios
{
/* public static List<Directorio> obtenerDirectorios()
{
string sql = @"select d.id, c.nombre, c.id_padre, c.imagen
from directorio d
order by c.id";
List<Directorio> directorios = new List<Directorio>();
SqlConnection conn = MiBD.obtenerConexion();
SqlCommand cmd = new SqlCommand(sql, conn);
IDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
directorios.Add(convertirDirectorio(reader));
}
return directorios;
}
public static Directorio convertirDirectorio(IDataReader leer)
{
return new Directorio()
{
id = Convert.ToInt32(leer["id"]),
id_padre = leer["id_padre"] == DBNull.Value ? null : (int?)Convert.ToInt32(leer["id_padre"]),
nombre = Convert.ToString(leer["nombre"]),
imagen = Convert.ToByte(leer["imagen"])
};
}
public static List<directorioJerarquia> obtenerDirectorioJerarquico()
{
List<Directorio> directoriosList = obtenerDirectorios();
List<directorioJerarquia> query = (from item in directoriosList
where item.id_padre == null
select new directorioJerarquia
{
id = item.id,
nombre = item.nombre,
directorioHijo = obtenerHijos(item.id, directoriosList)
}).ToList();
return query;
}
private static List<directorioJerarquia> obtenerHijos(int idDir, List<Directorio> directorioList)
{
List<directorioJerarquia> query = (from item in directorioList
let tieneHijos = directorioList.Where(o => o.id_padre == item.id).Any()
where item.id_padre == idDir
select new directorioJerarquia
{
id = item.id,
nombre = item.nombre,
directorioHijo = tieneHijos ? obtenerHijos(item.id, directorioList) : null
}).ToList();
return query;
}
private void CrearNodoHijo(List<directorioJerarquia> directorio, System.Web.UI.WebControls.TreeNode parentNode)
{
directorio.ForEach(x =>
{
System.Web.UI.WebControls.TreeNode node = new System.Web.UI.WebControls.TreeNode(x.nombre, Convert.ToString(x.id));
if (x.directorioHijo != null)
{
CrearNodoHijo(x.directorioHijo, node);
}
if (parentNode == null)
treeDirectorios.Nodes.Add(node);
else
parentNode.ChildNodes.Add(node);
});
}*/
}
}
=================================CONEXION============================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Data.Sql;
using System.Data.SqlClient;
namespace Taller4_Directorios
{
public class MiBD:DataContext
{
public Table<Directorio> directorio;
public MiBD() : base(Properties.Settings.Default.conexion) { }
public static SqlConnection obtenerConexion()
{
SqlConnection con = new SqlConnection(Properties.Settings.Default.conexion);
con.Open();
return con;
}
}
}
No hay comentarios:
Publicar un comentario