Aracılığıyla paylaş


SiteMapProvider.GetChildNodes(SiteMapNode) Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, belirli SiteMapNodebir öğesinin alt düğümlerini alır.

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

Parametreler

node
SiteMapNode

SiteMapNode Tüm alt düğümlerin alındığı.

Döndürülenler

Belirtilen SiteMapNodeöğesinin hemen alt düğümlerini içeren salt SiteMapNodeCollection okunur ; aksi takdirde veya null alt düğüm yoksa boş bir koleksiyon.

Örnekler

Aşağıdaki kod örneği, soyut SiteMapProvider sınıfı uygulayan bir sınıfta yönteminin nasıl uygulandığını GetChildNodes gösterir. hiyerarşik SimpleTextSiteMapProvider üst/alt ilişkileri bir Hashtable nesnede ve tüm SiteMapNode nesneleri başka bir nesnede depolar. yöntemi, GetChildNodes her iki nesneyi de ArrayList kullanarak ters arama gerçekleştirir.

Bu kod örneği, sınıfı için SiteMapProvider sağlanan daha büyük bir örneğin parçasıdır.

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

Açıklamalar

sınıfından SiteMapProvider türetilen sınıflar soyut GetChildNodes yöntemini uygulamalıdır.

Uygulayanlara Notlar

Türetilmiş bir sınıfta yöntemini geçersiz kıldığınızda GetChildNodes(SiteMapNode) alt düğümlerde güvenlik kırpması yaptığınızdan ve döndürülen koleksiyonun salt okunur olduğundan emin olun. Koleksiyon yalnızca belirtilen nodeöğesinin hemen alt öğelerini içerir.

Şunlara uygulanır

Ayrıca bkz.