Caricare in un controllo TreeView una sorgente dati in formato XML

di Riccardo Golia, in ASP.NET 2.0, DataBinding, XML,

Uno degli obiettivi primari della versione 2.0 di ASP.NET è stato senz'altro quello di mettere gli sviluppatori nella condizione di creare applicazioni Web più o meno complesse riducendo drasticamente il numero complessivo di linee di codice da scrivere. A tale scopo sono stati introdotti una serie di controlli per il binding dei dati che permettono di evitare di scrivere codice. In questo script, per esempio, le linee di codice scritte sono pari a zero!

Tra i controlli DataBound è stato introdotto il controllo TreeView, che permette di rappresentare un set di dati strutturati gerarchicamente in una vista ad albero. Il TreeView eredita dalla classe astratta HierarchicalDataBoundControl e accetta una sorgente dati che implementa l'interfaccia IHierarchicalDataSource, per esempio una sorgente di tipo XmlDataSource. Tramite la collection DataBindings composta da elementi di tipo TreeNodeBinding è possibile definire la corrispondenza tra i nodi dell'albero e i nodi della sorgente dati. La proprietà MaxDataBindDepth del controllo TreeView permette inoltre di specificare la massima profondità dei nodi che vengono presi in considerazione durante l'operazione di binding. Nell'esempio riportato, dato che MaxDataDindDepth vale 2, vengono aggiunti alla struttura ad albero solo i nodi della sorgente dati Root, Node1 e Node2.

Il controllo TreeView e il relativo controllo DataSource di tipo XmlDataSource:

<asp:TreeView ID="tvwSample" Runat="server" DataSourceId="xmlData" CssClass="..." EnableLines="true" ShowLines="false" ShowLines="true" ShowExpandCollapse="true" ExpandDepth="2" MaxDataBindDepth="2">
  <DataBindings>
    <asp:TreeNodeBinding DataMember="Root" TextField="Title" SelectAction="Expand" />
    <asp:TreeNodeBinding DataMember="Node1" TextField="Title" SelectAction="Expand" />
    <asp:TreeNodeBinding DataMember="Node2" TextField="Title" NavigateUrlField="Url" SelectAction="Select" />
    <asp:TreeNodeBinding DataMember="Node3" TextField="Title" NavigateUrlField="Url" SelectAction="Select" />
  </DataBindings>
</asp:TreeView>
<asp:XmlDataSource ID="xmlData" runat="server" DataFile="~/App_Data/Data.xml" CacheDuration="20"></asp:XmlDataSource>

Ecco la sorgente dati in formato XML:

<?xml version="1.0" encoding="utf-8" ?>
<Root Title="Root">
  <Node1 Title="1">
    <Node2 Title="1.1" Url="11.aspx">
      <Node3 Title="1.1.1" Url="111.aspx"></Node3>
      <Node3 Title="1.1.2" Url="112.aspx"></Node3>
    </Node2>
    <Node2 Title="1.2" Url="12.aspx">
      <Node3 Title="1.2.1" Url="121.aspx"></Node3>
      <Node3 Title="1.2.2" Url="122.aspx"></Node3>
    </Node2>
  </Node1>
</Root>

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi