SiteMapProvider.GetParentNode(SiteMapNode) Метод

Определение

Во время переопределения в производном классе получает родительский узел указанного объекта SiteMapNode.

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

Параметры

node
SiteMapNode

Объект SiteMapNode, для которого извлекается родительский узел.

Возвращаемое значение

SiteMapNode

Объект SiteMapNode, представляющий родительский элемент node; в противном случае — значение null, если объект SiteMapNode не имеет родительского элемента или включена фильтрация по ролям безопасности и родительский узел не доступен для текущего пользователя.

Примечание. GetParentNode(SiteMapNode) Также может возвращаться, null если родительский узел принадлежит другому поставщику. Вместо него в этом случае необходимо использовать свойство ParentNode объекта node.

Примеры

В следующем примере кода показано, как реализовать GetParentNode метод в классе, который реализует абстрактный SiteMapProvider класс. Сохраняет SimpleTextSiteMapProvider иерархическую связь "родитель-дочерний" между SiteMapNode объектами в интерфейсе IList , например ArrayList объект.

Этот пример кода является частью более крупного примера, предоставленного 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;
}
' 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

Применяется к

См. также раздел