Repeater: visualizzare un feed RSS

di: Andrea Marzilli     29 Marzo 2011

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

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto