Crear la tabla donde se tiene la relación padre a hijo infinito para n nodos y con padres sin hijos:
CREATE TABLE [dbo].[Tabla](
[codigo] [int] IDENTITY(1,1) NOT NULL,
[nombre] [varchar](50) NOT NULL,
[padre] [int] NULL
) ON [PRIMARY]
GO
la rellenamos con datos:
INSERT Tabla (nombre)
VALUES('Luis')--sin padre
INSERT Tabla (nombre,padre)
VALUES('Pedro',1)
INSERT Tabla (nombre)
VALUES('Alfonso')
INSERT Tabla (nombre)
VALUES('Jose')
INSERT Tabla (nombre,padre)
VALUES('Fidel', 4)
INSERT Tabla (nombre,padre)
VALUES('Pepe', 2)
dentro de la etiqueta script de un formulario o página ASP incluyes este código:
Dim conex As String = "Data Source=Yda;Initial Catalog=Trabajo;Integrated Security=True"
Sub Page_Load()
If Not Page.IsPostBack Then
FillNodes()
End If
End Sub
Sub FillNodes()
Dim ds As DataSet = GetData()
For Each masterRow As DataRow In ds.Tables("Padres").Rows
Dim masterNode As New TreeNode(masterRow("nombre").ToString(), masterRow("codigo").ToString())
If IsDBNull(masterRow("padre")) Then
TreeView1.Nodes.Add(masterNode)
Else
For Each node As TreeNode In TreeView1.Nodes
If node.Value.ToString() = masterRow("codigo").ToString() Then
masterNode = node
Exit For
End If
If node.ChildNodes.Count > 0 Then
Dim NodoEncontrado As TreeNode = BuscarNodo(node, masterRow("codigo").ToString())
If Not NodoEncontrado Is Nothing Then
masterNode = NodoEncontrado
Exit For
End If
End If
Next
End If
For Each childRow As DataRow In masterRow.GetChildRows("Hijo")
Dim childNode As New TreeNode(childRow("nombre").ToString(), childRow("codigo").ToString())
masterNode.ChildNodes.Add(childNode)
Next
Next
End Sub
Function BuscarNodo(ByVal arbol As TreeNode, ByVal codigo As String) As TreeNode
For Each node As TreeNode In arbol.ChildNodes
If node.Value.ToString() = codigo Then
BuscarNodo = node
Exit Function
End If
If node.ChildNodes.Count > 0 Then
BuscarNodo(node, codigo)
End If
Next
BuscarNodo = Nothing
End Function
Function GetData() As DataSet
Dim conn As SqlConnection = New SqlConnection(conex)
Dim sqlCat As StringBuilder = New StringBuilder()
sqlCat.Append("SELECT ISNULL(P1.Codigo,P2.Codigo) AS codigo, ")
sqlcat.Append("ISNULL(P1.nombre,P2.nombre) AS nombre, ")
sqlcat.Append("ISNULL(P1.padre,P2.padre) AS padre ")
sqlcat.Append("FROM ")
sqlCat.Append("(SELECT Tabla.codigo, Tabla.nombre, Tabla.padre ")
sqlcat.Append("FROM Tabla WHERE padre IS NULL) AS P1 ")
sqlcat.Append("FULL JOIN ")
sqlCat.Append("(SELECT T2.* ")
sqlcat.Append("FROM Tabla AS T1 INNER JOIN Tabla AS T2 ON ")
sqlcat.Append("T1.padre=T2.codigo) AS P2 ON ")
sqlcat.Append("P1.Codigo=P2.Codigo ")
sqlcat.Append("ORDER BY codigo ")
Dim sqlProd As String = "SELECT Codigo,Nombre,Padre FROM Tabla AS Hijos WHERE Padre<>''"
Dim daCat As SqlDataAdapter = New SqlDataAdapter(sqlCat.ToString(), conn)
Dim daProd As SqlDataAdapter = New SqlDataAdapter(sqlProd, conn)
Dim ds As DataSet = New DataSet()
daCat.Fill(ds, "Padres")
daProd.Fill(ds, "Hijos")
ds.Relations.Add("Hijo", _
ds.Tables("Padres").Columns("Codigo"), _
ds.Tables("Hijos").Columns("Padre"))
Return ds
End Function
Ejecuta y observa cómo se rellena el treeView.
Este Blog contiene noticias en general de actualidad y de interes tanto en informatica como en tecnologia
miércoles, 11 de noviembre de 2009
Cómo usar Treeview Webcontrol
El TreeView es un control de servidor ASP.NET que permite crear interfaces de usuario que representen datos jerárquicos.
Agregar el WebControl TreeView al cuadro de las herramientas de Visual Studio.NET
Para agregar el WebControl TreeView al cuadro de herramientas de Microsoft Visual Studio .NET, seguir los siguientes pasos:
1. Inicie Microsoft Visual Studio .NET.
2. En el menú Ver, haga clic en Cuadro de herramientas.
3. Haga clic con el botón secundario en la ficha Web Forms de la herramienta y a continuación, haga clic en Personalizar cuadro de herramientas. Haga clic con el botón secundario en la ficha Web Forms de la herramienta y a continuación, haga clic en Add/Remove items.
4. Haga clic en el tab. Componentes de .NET Framework, Aviso que esta ficha muestra al menos dos entradas TreeView. Hay una entrada TreeView para aplicaciones de Windows como archivos .exe. Hay otra entrada TreeView el WebControl TreeView de Internet Explorer.
5. Vea la columna Namespace para identificar el WebControl TreeView con el espacio de nombres Microsoft.Web.UI.WebControls. Haga clic de activar la casilla de verificación para este WebControl TreeView y después, hacer clic en Aceptar.
Crear el proyecto de Visual C # .NET y agregue el WebControl TreeView
1. Inicie Visual Studio . NET.
2. En el menú Archivo, seleccione Nuevo y a continuación, haga clic en Proyecto.
3. En el cuadro de diálogo Nuevo proyecto, haga clic en Proyectos de Visual C en Tipos de proyecto, haga clic en Aplicación Web ASP.NET en Plantillas y a continuación, haga clic en Aceptar.
4. En el menú Proyecto, haga clic en Agregar Web Forms.
5. En el cuadro Nombre, escriba un nombre para el formulario Web Forms y a continuación, haga clic en Abrir.
6. Siga estos pasos para agregar un WebControl TreeView al formulario Web Forms (imagen):
* En el menú Ver, haga clic en Cuadro de herramientas.
* Haga clic en la ficha Web Forms.
* Busque el WebControl TreeView. Se puede tener que desplazar por la lista para buscar el control TreeView.
* Arrastre el WebControl TreeView a su formulario Web Forms desde el cuadro de las herramientas. De forma predeterminada, el control se denomina TreeView1.
Desarrollando nuestra aplicación ASP.NET
En este ejemplo vamos a crear un TreeView dinámicamente, agregando nodo por nodo, dotándolo de estilos de presentación como colores, fuentes, tamaños, iconos y longitud de texto
Primeramente vamos a crear una clase llamada GetText, la cual nos va a dar la funcionalidad de establecer un ancho fijo para nuestro TreeView.
GetText.cs
public class GetText
{
public GetText()
{
// TODO: Add constructor logic here
}
// Determina el acomodo del texto en renglones según un determinado número de caracteres
// El texto a acomodar en renglones
// Número máximo de caracteres permitidos por renglón
//El texto acomodado por renglones
public static string DeterminarText(string texto, int MAX)
{
const string SEPARATOR = "
";
string newStr = "";
if(texto.Length>MAX)
{
string []tokens = texto.Split(' ');
string word = "";
int auxLength = 0;
int tokenLength = tokens.Length;
//Revisar t odos los tokens que se obtuvieron
for(int i=0; i
{
string aux = tokens[i]; //Se extrae el token actual
auxLength = word.Length + aux.Length ;
//Se obtiene la longitud de lo que seria los tokens acumulados mas el nuevo token
//Si los tokens acumulados mas el token actual no sobrepasan la longitud permitida se anexa
if(auxLength<=MAX) { word += " " + aux; } else { newStr = newStr + word + SEPARATOR; word = aux; } } newStr = newStr + word; } else { return texto; } return newStr; } } hora procederemos a agregar los nodos a nuestro TreeView implementando la función que acabamos de creear. Default.aspx.cs using TreeViewSample; //Declaramos el namespace de la clase que acomoda el texto del treeview private void CargarTreeView() { //Borra todos los nodos en caso de que los hubiera this.TreeView1.Nodes.Clear(); for (int i=0;i<10;i++) nodopadre =" new" defaultstyle =" new" text =" GetText.DeterminarText(" imageurl = "Images/Folder.gif" j="0;j<10;j++)" nodohijo =" new" defaultstyle =" new" text =" GetText.DeterminarText(" imageurl = "Images/page.gif">
(imagen)

(imagen1)
Agregar el WebControl TreeView al cuadro de las herramientas de Visual Studio.NET
Para agregar el WebControl TreeView al cuadro de herramientas de Microsoft Visual Studio .NET, seguir los siguientes pasos:
1. Inicie Microsoft Visual Studio .NET.
2. En el menú Ver, haga clic en Cuadro de herramientas.
3. Haga clic con el botón secundario en la ficha Web Forms de la herramienta y a continuación, haga clic en Personalizar cuadro de herramientas. Haga clic con el botón secundario en la ficha Web Forms de la herramienta y a continuación, haga clic en Add/Remove items.
4. Haga clic en el tab. Componentes de .NET Framework, Aviso que esta ficha muestra al menos dos entradas TreeView. Hay una entrada TreeView para aplicaciones de Windows como archivos .exe. Hay otra entrada TreeView el WebControl TreeView de Internet Explorer.
5. Vea la columna Namespace para identificar el WebControl TreeView con el espacio de nombres Microsoft.Web.UI.WebControls. Haga clic de activar la casilla de verificación para este WebControl TreeView y después, hacer clic en Aceptar.
Crear el proyecto de Visual C # .NET y agregue el WebControl TreeView
1. Inicie Visual Studio . NET.
2. En el menú Archivo, seleccione Nuevo y a continuación, haga clic en Proyecto.
3. En el cuadro de diálogo Nuevo proyecto, haga clic en Proyectos de Visual C en Tipos de proyecto, haga clic en Aplicación Web ASP.NET en Plantillas y a continuación, haga clic en Aceptar.
4. En el menú Proyecto, haga clic en Agregar Web Forms.
5. En el cuadro Nombre, escriba un nombre para el formulario Web Forms y a continuación, haga clic en Abrir.
6. Siga estos pasos para agregar un WebControl TreeView al formulario Web Forms (imagen):
* En el menú Ver, haga clic en Cuadro de herramientas.
* Haga clic en la ficha Web Forms.
* Busque el WebControl TreeView. Se puede tener que desplazar por la lista para buscar el control TreeView.
* Arrastre el WebControl TreeView a su formulario Web Forms desde el cuadro de las herramientas. De forma predeterminada, el control se denomina TreeView1.
Desarrollando nuestra aplicación ASP.NET
En este ejemplo vamos a crear un TreeView dinámicamente, agregando nodo por nodo, dotándolo de estilos de presentación como colores, fuentes, tamaños, iconos y longitud de texto
Primeramente vamos a crear una clase llamada GetText, la cual nos va a dar la funcionalidad de establecer un ancho fijo para nuestro TreeView.
GetText.cs
public class GetText
{
public GetText()
{
// TODO: Add constructor logic here
}
// Determina el acomodo del texto en renglones según un determinado número de caracteres
// El texto a acomodar en renglones
// Número máximo de caracteres permitidos por renglón
//
public static string DeterminarText(string texto, int MAX)
{
const string SEPARATOR = "
";
string newStr = "";
if(texto.Length>MAX)
{
string []tokens = texto.Split(' ');
string word = "";
int auxLength = 0;
int tokenLength = tokens.Length;
//Revisar t
for(int i=0; i
{
auxLength = word.Length + aux.Length ;
//Se obtiene la longitud de lo que seria los tokens acumulados mas el nuevo token
//Si los tokens acumulados mas el token actual no sobrepasan la longitud permitida se anexa
if(auxLength<=MAX) { word += " " + aux; } else { newStr = newStr + word + SEPARATOR; word = aux; } } newStr = newStr + word; } else { return texto; } return newStr; } } hora procederemos a agregar los nodos a nuestro TreeView implementando la función que acabamos de creear. Default.aspx.cs using TreeViewSample; //Declaramos el namespace de la clase que acomoda el texto del treeview private void CargarTreeView() { //Borra todos los nodos en caso de que los hubiera this.TreeView1.Nodes.Clear(); for (int i=0;i<10;i++) nodopadre =" new" defaultstyle =" new" text =" GetText.DeterminarText(" imageurl = "Images/Folder.gif" j="0;j<10;j++)" nodohijo =" new" defaultstyle =" new" text =" GetText.DeterminarText(" imageurl = "Images/page.gif">
(imagen)

(imagen1)
Suscribirse a:
Entradas (Atom)