Condividi tramite


SiteMapProvider.GetParentNode(SiteMapNode) Metodo

Definizione

Quando sottoposto a override in una classe derivata, recupera il nodo padre di un oggetto SiteMapNode specifico.

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

Parametri

node
SiteMapNode

Elemento SiteMapNode per il quale recuperare il nodo padre.

Restituisce

SiteMapNode

Elemento SiteMapNode che rappresenta l'elemento padre di node; in caso contrario, null, se l'elemento SiteMapNode non dispone di un elemento padre oppure è attivata la rimozione di sicurezza e l'utente corrente non può accedere al nodo padre.

Nota: GetParentNode(SiteMapNode) può anche restituire null se il nodo padre appartiene a un provider diverso. In questo caso usare la proprietà ParentNode dell'elemento node.

Esempio

Nell'esempio di codice seguente viene illustrato come implementare il GetParentNode metodo in una classe che implementa la classe astratta SiteMapProvider . Archivia SimpleTextSiteMapProvider la relazione padre/figlio gerarchica tra SiteMapNode gli oggetti in un'interfaccia IList , ad esempio un ArrayList oggetto .

Questo esempio di codice fa parte di un esempio più ampio fornito per la SiteMapProvider classe .

// 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

Si applica a

Vedi anche