Treeview
Treeview
31.
</book>
32.
</genre>
33.
<genre name="nonfiction">
34.
<book ISBN="11-000000-002">
35.
<title>Computer Dictionary</title>
36.
<price>24.95</price>
37.
<comments>
38.
<userComment rating="3">A valuable resource.</userComment>
39.
</comments>
40.
</book>
41.
<book ISBN="11-000000-003">
42.
<title>Cooking on a Budget</title>
43.
<price>23.95</price>
44.
<comments>
45.
<userComment rating="4">Delicious!</userComment>
46.
</comments>
47.
</book>
48.
</genre>
49. </bookstore>
El archivo XML contiene informacin acerca de los libros que podran estar
disponibles en una librera en lnea.
50. Guarde el archivo Bookstore.xml y cirrelo.
Mostrar datos XML en el control TreeView
En esta seccin utilizar el control TreeView para mostrar los datos XML.Para empezar,
puede hacer que se muestre la informacin XML sin ninguna configuracin especial.
Puede crear un enlace de datos para cualquier elemento de un archivo XML, pero slo
puede enlazar con los atributos del elemento, el texto interior, el nombre del elemento o el
valor del elemento.No se puede enlazar con ninguno de los elementos anidados.Para
mostrar los valores en los elementos anidados, cree enlaces independientes a esos
elementos.Un mtodo alternativo consiste en transformar el archivo XML mediante XSLT,
de modo que los elementos internos se conviertan en atributos.Para obtener ms
informacin y un ejemplo, vea la propiedad XmlDataSource.TransformFile.
Mostrar datos relacionales en el control TreeView
El control TreeView puede mostrar cualquier tipo de datos jerrquicos, incluso si la
jerarqua de datos es lgica, como ocurre en una base de datos, y no fsica, como en un
archivo XML.En esta seccin utilizar el control TreeView para mostrar datos de las tablas
relacionadas en la base de datos Northwind.
Para empezar, crear una conexin al equipo en el que se ejecuta SQL Server y se encuentra
la base de datos Northwind.
Nota
Si la ficha Explorador de servidores no est visible en Visual Web Developer, en el men
Ver haga clic en Explorador de servidores.Si la ficha Explorador de base de datos no est
visible, en el men Ver haga clic en Explorador de base de datos.
2. En el cuadro Agregar conexin, escriba el nombre de su servidor en Nombre de
servidor.
3. En la seccin Conexin con el servidor, seleccione la opcin que resulte apropiada
para el acceso a la base de datos de SQL Server que se ejecuta (seguridad integrada
o id. y contrasea especficos) y, si es necesario, especifique un nombre de usuario y
una contrasea.
4. Active la casilla Guardar mi contrasea.
Nota
En aplicaciones de produccin, no utilice Guardar mi contrasea, porque con esta opcin se
incrustan el nombre de usuario y la contrasea en los archivos de aplicacin.
5. En Seleccione o escriba el nombre de la base de datos, escriba Northwind.
6. Haga clic en Probar conexin y, cuando est seguro de que funciona, haga clic en
Aceptar.
La nueva conexin se ha creado bajo Conexiones de datos en el Explorador de
servidores (o en el Explorador de base de datos).
1. Agregue al sitio Web una pgina Web ASP.NET (pgina de formularios Web Forms)
con el nombre TreeViewDynamic.aspx.
2. Abra la pgina TreeViewDynamic.aspx, cambie a la vista de diseo y despus, en
Toolbox, desde el grupo Estndar, arrastre un control Label hasta la pgina y
asgnele el nombre labelStatus.
El control labelStatus slo se utiliza para generar informes de errores.
3. En el Cuadro de herramientas, arrastre un control TreeView desde el grupo
Navegacin hasta la pgina.
4. Haga clic con el botn secundario en el control TreeView, haga clic en Propiedades
y, a continuacin, establezca MaxDataBindDepth en 2.
5. Haga clic con el botn secundario del mouse en el control TreeView, haga clic en
Mostrar tareas inteligentes y, a continuacin, en el men Tareas de Treeview, haga
clic en Editar nodos.
6. En el cuadro de dilogo Editor de nodos de TreeView, haga clic en el icono que
tiene la etiqueta Agregar un nodo raz y despus, en Propiedades, establezca Text en
Lista de productos y PopulateOnDemand en true.
7. Haga clic en Aceptar.
Crea el nodo superior del rbol, que slo contiene texto esttico.
C#
protected void TreeView1_TreeNodePopulate(
object sender, TreeNodeEventArgs e)
{
if (e.Node.ChildNodes.Count == 0)
{
switch (e.Node.Depth)
{
case 0:
PopulateCategories(e.Node);
break;
case 1:
PopulateProducts(e.Node);
break;
}
}
}
Se llama a este cdigo cuando un usuario hace clic en un nodo para abrirlo.Dado
que desea que se muestren datos distintos en diferentes niveles del rbol, deber
determinar en qu profundidad ha hecho clic el usuario y, a continuacin, rellenar
adecuadamente los nodos de ese nivel.En este tutorial se llama al mtodo
PopulateCategories si el usuario hace clic en el nodo raz (profundidad 0).Se llama
al mtodo PopulateProducts si el usuario hace clic en un nombre de categora
(profundidad 1).Los mtodos se muestran en la seccin siguiente.
El objeto TreeNodeEventArgs proporciona acceso mediante programacin al nodo
actual.Para rellenar el nodo, agrguele elementos.En el cdigo de ejemplo, el nodo
se pasa al mtodo que agregar los nodos secundarios.
C#
using System.Data;
using System.Data.SqlClient;
End Sub
C#
void PopulateCategories(TreeNode node)
{
SqlCommand sqlQuery = new SqlCommand(
"Select CategoryName, CategoryID From Categories");
DataSet resultSet;
resultSet = RunQuery(sqlQuery);
if (resultSet.Tables.Count > 0)
{
foreach (DataRow row in resultSet.Tables[0].Rows)
{
TreeNode NewNode = new
TreeNode(row["CategoryName"].ToString(),
row["CategoryID"].ToString());
NewNode.PopulateOnDemand = true;
NewNode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(NewNode);
}
}
}
C#
void PopulateProducts(TreeNode node)
{
SqlCommand sqlQuery = new SqlCommand();
sqlQuery.CommandText = "Select ProductName From Products " +
" Where CategoryID = @categoryid";
sqlQuery.Parameters.Add("@categoryid", SqlDbType.Int).Value =
node.Value;
DataSet ResultSet = RunQuery(sqlQuery);
if (ResultSet.Tables.Count > 0)
{
foreach (DataRow row in ResultSet.Tables[0].Rows)
{
TreeNode NewNode = new
TreeNode(row["ProductName"].ToString());
NewNode.PopulateOnDemand = false;
NewNode.SelectAction = TreeNodeSelectAction.None;
node.ChildNodes.Add(NewNode);
}
}
}
C#
private DataSet RunQuery(SqlCommand sqlQuery)
{
string connectionString =
ConfigurationManager.ConnectionStrings
["NorthwindConnectionString"].ConnectionString;
SqlConnection DBConnection =
new SqlConnection(connectionString);
SqlDataAdapter dbAdapter = new SqlDataAdapter();
dbAdapter.SelectCommand = sqlQuery;
sqlQuery.Connection = DBConnection;
DataSet resultsDataSet = new DataSet();
try
{
dbAdapter.Fill(resultsDataSet);
}
catch
{
labelStatus.Text = "Unable to connect to SQL Server.";
}
return resultsDataSet;
}
Con este cdigo se crea un adaptador de datos basado en el objeto SqlCommand que
se le pasa.A continuacin, se crea y se rellena un conjunto de datos con el adaptador.
Ya puede probar la pgina.
2. Haga clic en una categora con objeto de confirmar que se contrae y se expande para
mostrar una lista de productos en cada categora.
http://msdn.microsoft.com/es-es/library/7a9swst5%28v=vs.100%29.aspx
TreeView (control)
Expression Studio 2.0
Otras versiones
El control TreeView sirve para mostrar datos jerrquicos, como una tabla de contenido o un
directorio de archivos, en una estructura de rbol.
Para agregar un control TreeView a una pgina
El control TreeView se compone de uno o varios nodos. Cada entrada en el rbol se conoce
como nodo. En la tabla siguiente se describen los tres tipos de nodo diferentes que existen.
Tipos de nodo del control TreeView
Tipo de nodo
Descripcin
Raz
Nodo que no tiene ningn nodo primario y tiene uno o varios nodos
secundarios.
Primario
Hoja
Aunque un rbol tpico slo tiene un nodo raz, el control TreeView le permite agregar
varios nodos raz a la estructura de rbol. Esto resulta til cuando se desean mostrar las
listas de elementos sin mostrar un nico nodo raz principal, como por ejemplo, en una lista
de categoras de producto.
Cada nodo tiene una propiedad Text y una propiedad Value. El valor de la propiedad Text
se muestra en el control TreeView, mientras que la propiedad Value se usa para almacenar
cualquier dato adicional sobre el nodo, como los datos transferidos al evento de devolucin
de datos asociado con el nodo.
Para definir nodos para el control TreeView
6. Cuando haya agregado varios elementos de men, puede ajustar su orden o sangra
si los selecciona y hace clic en Subir un elemento entre sus relacionados
un elemento entre sus relacionados
relacionado de su principal
, Bajar
o Quitar un elemento