IHierarchicalEnumerable.GetHierarchyData(Object) Metodo

Definizione

Restituisce un elemento di dati gerarchici per l'elemento enumerato specificato.

public System.Web.UI.IHierarchyData GetHierarchyData (object enumeratedItem);

Parametri

enumeratedItem
Object

Oggetto Object per il quale si desidera restituire un oggetto IHierarchyData.

Restituisce

IHierarchyData

Un'istanza IHierarchyData che rappresenta l'oggetto Object passato al metodo GetHierarchyData(Object).

Esempio

Nell'esempio di codice seguente viene illustrato come un controllo gerarchico associato a dati ASP.NET usa un IHierarchyData oggetto in un metodo di data binding ricorsivo. Gli elementi di un IHierarchicalEnumerable oggetto vengono enumerati e per ogni IHierarchyData oggetto viene recuperato usando il GetHierarchyData metodo . Infine, la proprietà viene controllata per determinare se è necessaria la HasChildren ricorsione. Questo esempio di codice fa parte di un esempio più grande fornito per la HierarchicalDataBoundControl classe.

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;
        }
    }
}

Commenti

In genere, i client che usano IHierarchicalEnumerable raccolte recuperano un IEnumerator oggetto chiamando il metodo, quindi esegue l'iterazione tramite l'enumerazione GetEnumerator e chiama il GetHierarchyData metodo su ogni elemento enumerato per recuperare un IHierarchyData oggetto.

Si applica a

Vedi anche