SiteMapProvider.GetChildNodes(SiteMapNode) Metodo

Definizione

Quando sottoposto a override in una classe derivata, recupera i nodi figlio di uno specifico elemento SiteMapNode.When overridden in a derived class, retrieves the child nodes of a specific SiteMapNode.

public:
 abstract System::Web::SiteMapNodeCollection ^ GetChildNodes(System::Web::SiteMapNode ^ node);
public abstract System.Web.SiteMapNodeCollection GetChildNodes (System.Web.SiteMapNode node);
abstract member GetChildNodes : System.Web.SiteMapNode -> System.Web.SiteMapNodeCollection
Public MustOverride Function GetChildNodes (node As SiteMapNode) As SiteMapNodeCollection

Parametri

node
SiteMapNode

Elemento SiteMapNode per il quale recuperare tutti i nodi figlio.The SiteMapNode for which to retrieve all child nodes.

Restituisce

Elemento SiteMapNodeCollection di sola lettura contenente tutti i nodi figlio diretti dell'elemento SiteMapNode specificato; in caso contrario, null oppure una raccolta vuota se non esiste alcun nodo figlio.A read-only SiteMapNodeCollection that contains the immediate child nodes of the specified SiteMapNode; otherwise, null or an empty collection, if no child nodes exist.

Esempi

Nell'esempio di codice seguente viene illustrato come implementare GetChildNodes il metodo in una classe che implementa la SiteMapProvider classe astratta.The following code example demonstrates how to implement the GetChildNodes method in a class that implements the abstract SiteMapProvider class. Archivia le relazioni gerarchiche padre/figlio in un Hashtable oggetto e tutti SiteMapNode gli oggetti in un altro. SimpleTextSiteMapProviderThe SimpleTextSiteMapProvider stores the hierarchical parent/child relationships in one Hashtable object and all SiteMapNode objects in another. Il GetChildNodes metodo esegue una ricerca inversa usando entrambi ArrayList gli oggetti.The GetChildNodes method performs a reverse-lookup using both ArrayList objects.

Questo esempio di codice fa parte di un esempio più ampio fornito SiteMapProvider per la classe.This code example is part of a larger example provided for the SiteMapProvider class.

// 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;
}
' Implement the GetChildNodes method.
Public Overrides Function GetChildNodes(ByVal node As SiteMapNode) As SiteMapNodeCollection
  Dim children As New SiteMapNodeCollection()
  ' Iterate through the ArrayList and find all nodes that have the specified node as a parent.
  SyncLock Me
    Dim i As Integer
    For i = 0 To childParentRelationship.Count - 1

      Dim de As DictionaryEntry = CType(childParentRelationship(i), DictionaryEntry)
      Dim nodeUrl As String = CType(de.Key, String)

      Dim parent As SiteMapNode = GetNode(childParentRelationship, nodeUrl)

      If Not (parent Is Nothing) AndAlso node.Url = parent.Url Then
        ' The SiteMapNode with the Url that corresponds to nodeUrl
        ' is a child of the specified node. Get the SiteMapNode for
        ' the nodeUrl.
        Dim child As SiteMapNode = FindSiteMapNode(nodeUrl)
        If Not (child Is Nothing) Then
          children.Add(CType(child, SiteMapNode))
        Else
          Throw New Exception("ArrayLists not in sync.")
        End If
      End If
    Next i
  End SyncLock
  Return children
End Function 'GetChildNodes

Protected Overrides Function GetRootNodeCore() As SiteMapNode
  Return RootNode
End Function ' GetRootNodeCore()

' Implement the GetParentNode method.
Public Overrides Function GetParentNode(ByVal node As SiteMapNode) As SiteMapNode
  ' Check the childParentRelationship table and find the parent of the current node.
  ' If there is no parent, the current node is the RootNode.
  Dim parent As SiteMapNode = Nothing
  SyncLock Me
    ' Get the Value of the node in childParentRelationship
    parent = GetNode(childParentRelationship, node.Url)
  End SyncLock
  Return parent
End Function 'GetParentNode

Commenti

Le classi che derivano SiteMapProvider dalla classe devono implementare il GetChildNodes metodo abstract.Classes that derive from the SiteMapProvider class must implement the abstract GetChildNodes method.

Note per gli eredi

Quando si esegue l' GetChildNodes(SiteMapNode) override del metodo in una classe derivata, assicurarsi di eseguire il taglio di sicurezza sui nodi figlio e assicurarsi che la raccolta restituita sia di sola lettura.When overriding the GetChildNodes(SiteMapNode) method in a derived class, be sure to perform security trimming on the child nodes and ensure that the returned collection is read-only. La raccolta contiene solo gli elementi figlio immediati nodedell'oggetto specificato.The collection contains only the immediate children of the specified node.

Si applica a

Vedi anche