IHierarchicalEnumerable.GetHierarchyData(Object) メソッド

定義

指定された列挙項目の階層的なデータ項目を返します。Returns a hierarchical data item for the specified enumerated item.

public:
 System::Web::UI::IHierarchyData ^ GetHierarchyData(System::Object ^ enumeratedItem);
public System.Web.UI.IHierarchyData GetHierarchyData (object enumeratedItem);
abstract member GetHierarchyData : obj -> System.Web.UI.IHierarchyData
Public Function GetHierarchyData (enumeratedItem As Object) As IHierarchyData

パラメーター

enumeratedItem
Object

Object を返す対象の IHierarchyDataThe Object for which to return an IHierarchyData.

戻り値

IHierarchyData

IHierarchyData メソッドに渡される Object を表す GetHierarchyData(Object) インスタンス。An IHierarchyData instance that represents the Object passed to the GetHierarchyData(Object) method.

次のコード例は、ASP.NET 階層データバインドコントロールが、 IHierarchyData 再帰的なデータバインディングメソッドでオブジェクトを使用する方法を示しています。The following code example demonstrates how an ASP.NET hierarchical data-bound control uses an IHierarchyData object in a recursive data-binding method. オブジェクト内の項目が IHierarchicalEnumerable 列挙され、各 IHierarchyData オブジェクトがメソッドを使用して取得され GetHierarchyData ます。The items in an IHierarchicalEnumerable object are enumerated, and for each an IHierarchyData object is retrieved using the GetHierarchyData method. 最後に、 HasChildren 再帰が必要かどうかを判断するために、プロパティがチェックされます。Finally, the HasChildren property is checked to determine whether recursion is necessary. このコード例は、HierarchicalDataBoundControl クラスのために提供されている大規模な例の一部です。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

注釈

通常、コレクションを使用するクライアントは、 IHierarchicalEnumerable メソッドを呼び出してオブジェクトを取得し、 IEnumerator GetEnumerator 列挙体を反復処理して、列挙された GetHierarchyData 各項目に対してメソッドを呼び出してオブジェクトを取得し IHierarchyData ます。Typically, clients that use IHierarchicalEnumerable collections retrieve an IEnumerator object by calling the GetEnumerator method, then iterate through the enumeration and call the GetHierarchyData method on each enumerated item to retrieve an IHierarchyData object.

適用対象

こちらもご覧ください