Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. |
Traducción
Original
|
SiteMapProvider.GetChildNodes (Método)
Cuando se reemplaza en una clase derivada, recupera los nodos secundarios de un SiteMapNode concreto.
Ensamblado: System.Web (en System.Web.dll)
Parámetros
- node
- Tipo: System.Web.SiteMapNode
SiteMapNode cuyos nodos secundarios se van a recuperar.
Valor devuelto
Tipo: System.Web.SiteMapNodeCollectionEs un SiteMapNodeCollection de sólo lectura que contiene los nodos secundarios inmediatos del SiteMapNodeespecificado; de lo contrario, es null o una colección vacía si no existe ningún nodo secundario.
Las clases que se derivan de la clase SiteMapProvider deben implementar el método GetChildNodes abstracto.
Notas para los herederos
Al reemplazar el método GetChildNodes en una clase derivada, asegúrese de realizar el recorte de seguridad en los nodos secundarios y de garantizar que la colección devuelta sea de sólo lectura. La colección contiene sólo los elementos secundarios inmediatos del node especificado.
En el siguiente ejemplo de código se muestra cómo implementar el método GetChildNodes en una clase que implementa la clase abstracta SiteMapProvider. El SimpleTextSiteMapProvider almacena las relaciones jerárquicas de los elementos primarios y secundarios en un objeto Hashtable y todos los objetos SiteMapNode en otro. El método GetChildNodes realiza una búsqueda inversa utilizando ambos objetos ArrayList.
Este ejemplo de código forma parte de un ejemplo más extenso referente a la clase SiteMapProvider.
// Implement the GetChildNodes method. public override SiteMapNodeCollection GetChildNodes(SiteMapNode node) { SiteMapNodeCollection children = new SiteMapNodeCollection(); // Iterate through the ArrayList and find all nodes that have the specified node as a parent. lock (this) { for (int i = 0; i < childParentRelationship.Count; i++) { string nodeUrl = ((DictionaryEntry)childParentRelationship[i]).Key as string; SiteMapNode parent = GetNode(childParentRelationship, nodeUrl); if (parent != null && node.Url == parent.Url) { // The SiteMapNode with the Url that corresponds to nodeUrl // is a child of the specified node. Get the SiteMapNode for // the nodeUrl. SiteMapNode child = FindSiteMapNode(nodeUrl); if (child != null) { children.Add(child as SiteMapNode); } else { throw new Exception("ArrayLists not in sync."); } } } } return children; } protected override SiteMapNode GetRootNodeCore() { return RootNode; } // Implement the GetParentNode method. public override SiteMapNode GetParentNode(SiteMapNode node) { // Check the childParentRelationship table and find the parent of the current node. // If there is no parent, the current node is the RootNode. SiteMapNode parent = null; lock (this) { // Get the Value of the node in childParentRelationship parent = GetNode(childParentRelationship, node.Url); } return parent; }
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.