Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Repeater: visualizzare un feed RSS

Utilizzare il controllo XMLDataSource e sfruttare il metodo XPath() di .NET
Utilizzare il controllo XMLDataSource e sfruttare il metodo XPath() di .NET
Link copiato negli appunti

Nell'articolo precendente abbiamo osservato le basi del controllo Repeater e ci siamo ripromessi di utilizzare questo controllo per visualizzare il feed RSS di Edit.

L'elenco delle news di Edit

La prima cosa da fare è creare una sorgente dati XML che peschi informazioni dal file RSS e le fornisca al nostro Repeater. Per questo utilizziamo un XmlDataSource che chiamiamo "FeedEdit":

<asp:XmlDataSource ID="FeedEdit" runat="server"
                   DataFile="http://blog.html.it/rss"
                   XPath="//item">
</asp:XmlDataSource>

L'attributo DataFile indica il file XML da interrogare e in XPath abbiamo definito l'espressione che preleva tutti gli elementi "item" del documento. Questo componente ci fornirà quindi tutte le entries del nostro feed. Non ci resta che andare avanti con Repeater.

Inseriamo i dati nel template

Una volta creato il nostro datasource, riprendiamo il codice che avevamo visto la scorsa volta e vediamo come collegare il controllo ai dati.

Il binding è molto semplice, è sufficiente attribuire al DataSourceID del Repeater l'ID della fonte di dati:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="FeedEdit" >

A questo punto è tutto collegato, non ci resta che decidere il markup HTML che ci serve per mostrare le informazioni. Optiamo per un template di questo tipo:

<h1>Titolo del feed</h1><dl><!--header-->
<dt><a href=""><!-- titolo dell'item --></a></dt>
<dd><!-- descrizione dell'item --></dd>
<div class="separator"><a href="#">top</a></div><!--separator-->
<dt class ="even"><a href=""><!-- titolo dell'item alternativo --></a></dt>
<dd class ="even"><!-- descrizione dell'item alternativo --></dd>
<div class="separator"><a href="#">top</a></div><!--separator-->
</dl><div class="bottom">HTML.it</div> <!--footer-->

Non ci resta che incastonare il nostro markup HTML nel template del Repeater:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="FeedEdit" >
  <HeaderTemplate><h1>Feed RSS di <a href="http://blog.html.it/rss">Edit</a></h1><dl></HeaderTemplate>
  <ItemTemplate>
    <dt><a href="<%#  XPath("link") %>"><%# XPath("title") %></a></dt>
	<dd><%# XPath("description") %></dd>
  </ItemTemplate>
  <AlternatingItemTemplate>
    <dt class ="even"><a href="<%# XPath("link") %>"><%# XPath("title") %></a></dt>
	<dd class ="even"><%# XPath("description") %></dd>
  </AlternatingItemTemplate>
  <SeparatorTemplate><div class="separator"><a href="#">top</a></div></SeparatorTemplate>
  <FooterTemplate></dl><div class="bottom">HTML.it</div></FooterTemplate>
</asp:Repeater>

XPath()

Il gioco è fatto, ma prima di passare al make-up soffermiamoci sul metodo XPath(). Qui è importante sottolineare che non utilizziamo Eval() come faremmo ad esempio quando il datasource è una tabella SQL, per semplicità possiamo dire che XPath() è l'omologo di Eval() ma è anche molto potente e permette di effettuare vere e proprie interrogazioni in formato XPath appunto alla nostra sorgente dati.

Il CSS

Per ottenere il look-and-feel che abbiamo visto la scorsa volta non ci resta che inserire un po' di CSS:

a  {font-family:Georgia, serif; text-decoration:none; color:#000; }
a:hover {color:#770;}
h1 {font:40px Georgia, serif; font-style:italic;}
dl {margin:30px; width:600px;}
dt {margin-top:20px; font-size:24px;}
dd {font:16px Georgia, serif; margin:0; padding:10px 0; color: #222; }
.even { text-align:right;}
.separator {border-bottom:1px solid #eee; width:150px; margin:10px auto;font: 9px verdana,sans-serif; text-align:center; letter-spacing:0.2em;}
.bottom {width:630px; background-color:#700; font:12px Georgia, serif; color:#fff; text-align:right;padding:2px; }

Ti consigliamo anche