IHierarchyData.HasChildren Eigenschaft

Definition

Gibt an, ob der vom IHierarchyData-Objekt dargestellte hierarchische Datenknoten über untergeordnete Knoten verfügt.Indicates whether the hierarchical data node that the IHierarchyData object represents has any child nodes.

public:
 property bool HasChildren { bool get(); };
public bool HasChildren { get; }
member this.HasChildren : bool
Public ReadOnly Property HasChildren As Boolean

Eigenschaftswert

true, wenn der aktuelle Knoten über untergeordnete Knoten verfügt, andernfalls false.true if the current node has child nodes; otherwise, false.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein hierarchisches Daten gebundenes ASP.net IHierarchyData -Steuerelement ein-Objekt in einer rekursiven Daten Bindungsmethode verwendet.The following code example demonstrates how an ASP.NET hierarchical data-bound control uses an IHierarchyData object in a recursive data-binding method. Die Elemente in einer IHierarchicalEnumerable -Auflistung werden aufgezählt, und für IHierarchyData jedes Objekt wird mithilfe der GetHierarchyData -Methode abgerufen.The items in an IHierarchicalEnumerable collection are enumerated, and for each an IHierarchyData object is retrieved using the GetHierarchyData method. Zum Schluss wird HasChildren die-Eigenschaft geprüft, um zu bestimmen, ob eine Rekurse erfolgt.Finally, the HasChildren property is checked to determine whether to recurse. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die HierarchicalDataBoundControl -Klasse bereitgestellt wird.This code example is part of a larger example provided for the HierarchicalDataBoundControl class.

private void RecurseDataBindInternal(TreeNode node, 
    IHierarchicalEnumerable enumerable, int depth) {                                    
                
    foreach(object item in enumerable) {
        IHierarchyData data = enumerable.GetHierarchyData(item);

        if (null != data) {
            // Create an object that represents the bound data
            // to the control.
            TreeNode newNode = new TreeNode();
            RootViewNode rvnode = new RootViewNode();
            
            rvnode.Node = newNode;
            rvnode.Depth = depth;

            // The dataItem is not just a string, but potentially
            // an XML node or some other container. 
            // If DataTextField is set, use it to determine which 
            // field to render. Otherwise, use the first field.                    
            if (DataTextField.Length > 0) {
                newNode.Text = DataBinder.GetPropertyValue
                    (data, DataTextField, null);
            }
            else {
                PropertyDescriptorCollection props = 
                    TypeDescriptor.GetProperties(data);

                // Set the "default" value of the node.
                newNode.Text = String.Empty;                        

                // Set the true data-bound value of the TextBox,
                // if possible.
                if (props.Count >= 1) {                        
                    if (null != props[0].GetValue(data)) {
                        newNode.Text = 
                            props[0].GetValue(data).ToString();
                    } 
                }
            }

            Nodes.Add(rvnode);                    
            
            if (data.HasChildren) {
                IHierarchicalEnumerable newEnumerable = 
                    data.GetChildren();
                if (newEnumerable != null) {                            
                    RecurseDataBindInternal(newNode, 
                        newEnumerable, depth+1 );
                }
            }
            
            if ( _maxDepth < depth) _maxDepth = depth;
            
        }
    }
}
Private Sub RecurseDataBindInternal(ByVal node As TreeNode, _
    ByVal enumerable As IHierarchicalEnumerable, _
    ByVal depth As Integer)

    Dim item As Object
    For Each item In enumerable

        Dim data As IHierarchyData = enumerable.GetHierarchyData(item)

        If Not data Is Nothing Then

            ' Create an object that represents the bound data
            ' to the control.
            Dim newNode As New TreeNode()
            Dim rvnode As New RootViewNode()

            rvnode.Node = newNode
            rvnode.Depth = depth

            ' The dataItem is not just a string, but potentially
            ' an XML node or some other container. 
            ' If DataTextField is set, use it to determine which 
            ' field to render. Otherwise, use the first field.                    
            If DataTextField.Length > 0 Then
                newNode.Text = DataBinder.GetPropertyValue _
                (data, DataTextField, Nothing)
            Else
                Dim props As PropertyDescriptorCollection = _
                TypeDescriptor.GetProperties(data)

                ' Set the "default" value of the node.
                newNode.Text = String.Empty

                ' Set the true data-bound value of the TextBox,
                ' if possible.
                If props.Count >= 1 Then
                    If Not props(0).GetValue(data) Is Nothing Then
                        newNode.Text = props(0).GetValue(data).ToString()
                    End If
                End If
            End If

            Nodes.Add(rvnode)

            If data.HasChildren Then
                Dim newEnumerable As IHierarchicalEnumerable = _
                    data.GetChildren()
                If Not (newEnumerable Is Nothing) Then
                    RecurseDataBindInternal(newNode, _
                    newEnumerable, depth + 1)
                End If
            End If

            If MaxDepth < depth Then
                MaxDepth = depth
            End If
        End If
    Next item

End Sub

Hinweise

Die HasChildren -Eigenschaft ist eine Hilfseigenschaft, die es Aufrufern ermöglicht, den Rückgabe GetChildren Wert der null-Methode für nicht zu überprüfen.The HasChildren property is a convenience property that enables callers to avoid checking the return value of the GetChildren method for null. Wenn die HasChildren -Eigenschaft truezurückgibt, GetChildren rufen Sie die- IHierarchicalEnumerable Methode auf, um eine Auflistung von untergeordneten Knoten abzurufen.If the HasChildren property returns true, call the GetChildren method to retrieve an IHierarchicalEnumerable collection of child nodes.

Gilt für:

Siehe auch