AdventureWorks Cinema RssRepeater in eigenen Projekten verwenden

Thursday, June 08, 2006 3:42:26 PM (W. Europe Daylight Time, UTC+02:00)

In AdventureWorks Cinema haben wir zur Generierung von RSS Feeds ein modifiziertes Repeater-Control verwendet. Dieses kann man auch in eigenen Seiten verwenden, um bequem RSS Feeds in eine Seite einzuauen. Unsere RssRepeater-Control befindet sich sogar in einer eigenen Assembly, diese können Sie einfach als Referenz zu eigenen Projekten hinzufügen und verwenden.

  1. Die Assembly die man dafür benötigt ist die AdventureWorks.Cinema.Client.Rss.WebControls.dll. Diese müssen Sie per „Add Reference“ dem eigenen Projekt hinzufügen.
  2. Als nächstes benötigen Sie eine neue leere Seite, über diese soll später der RSS-Feed abrufbar sein. Fügen Sie dem Projekt eine neue Web Form hinzu, z.B. MeinRssFeed.aspx.
  3. In der leeren Seite müssen Sie nun die RssRepeater-Control registrieren. Fügen Sie dazu in der 2. Zeile, also nach <% Page ... %> die folgende Zeile ein:

<%@ Register

Assembly="AdventureWorks.Cinema.Client.Rss.WebControls"

Namespace="AdventureWorks.Cinema.Client.Rss.WebControls"

TagPrefix="adventureworks" %>

 

Dadurch können Sie innerhalb Ihrer Seite alle Controls aus der WebControls-Assembly verwenden.

 

  1. Nun benötigen Sie eine Datenquelle für Ihren RssRepeater. Um Beispielsweise Daten aus einer SQL-Server Datenbank zu verwenden müssen Sie ein SqlDataSource zu ihrer Seite hinzufügen. Die SqlDataSource müssen Sie innerhalb des <Form>...</Form> Tags einfügen. Über das ConnectionString-Attribut müssen Sie einen ConnectionString angeben, über den die Datenbankverbindung konfiguriert wird. Das SelectCommand-Attribut legt das SQL-Statement fest, das zur Abfrage der Daten verwendet wird. Beides lässt sich bequem über einen Wizard konfigurieren. Wechseln Sie dazu in die Design-Ansicht. Die SqlDataSource hat einen SmartTag, wenn Sie diesen öffnen finden Sie dort einen Eintrag „Configure Data Source“. Fertig konfiguriert könnte das SqlDataSource z.B. so aussehen:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:IhrConnectionString%>"

SelectCommand="SELECT [NewsID], [Titel], [Text], [Datum], [Bild] FROM [ugpb_News] ORDER BY [Datum] DESC" />

 

  1. Wechseln Sie nun zurück in die Source-Ansicht. Fügen Sie nun den RssRepeater in Ihre Seite ein, ebenfalls innerhalb des <Form>...</Form> Bereichs. Als DataSourceID müssen Sie die ID Ihrer SqlDataSource angeben. Außerdem können Sie z.B. eine Beschreibung und einen Link für Ihren RSS Feed konfigurieren:

<adventureworks:RssRepeater

ID="NewsRSSRepeater" runat="server"

DataSourceID="SqlDataSource1"

RssDescription="News der .NET User Group Paderborn"

RssLink="http://www.dotnet-paderborn.de"

RssTitle="News der .NET User Group Paderborn">

<ItemTemplate>

</ItemTemplate>

</adventureworks:RssRepeater>

 

  1. Abschließend müssen Sie nur noch festlegen, wie der Inhalt des RSS-Feeds aussehen soll. Wie einzelne Einträge im RSS-Feed aussehen, wird über ein ItemTemplate festgelegt. Ein Item innerhalb eines RSS-Feeds kann verschiedene Elemente enthalten, Details können Sie in der RSS-Spezifikation nachschlagen. Die wichtigsten Elemente sind <title> (Titel des Eintrags), <description> (Der Inhalt) und <pubDate> (Das Datum). Das ItemTemplate für die News der .NET User Group Paderborn sieht z.B. folgendermaßen aus:

 

<ItemTemplate>

<item>

<title><%# Eval("Titel") %></title>

<description><%# Eval("Text") %></description>

<pubDate><%# ((DateTime)DataBinder.Eval(Container.DataItem, "Datum")).ToUniversalTime().ToString("r") %></pubDate>

<guid><%# Eval("NewsID") %></guid>

</item>

</ItemTemplate>

 

Das war auch schon alles, Sie haben nun einen RSS-Feed in Ihre Seite eingebaut! Den übrigen Inhalt der Seite können Sie ignorieren, da der RssRepeater vor dem Rendern die übrige Ausgabe der Seite löscht. Es soll ja schließlich kein HTML erzeugt werden, sondern ein RSS-Feed.

Einige Browser (z.B. der Internet Explorer 7) können RSS Feeds direkt anzeigen. Um dem Browser mitzuteilen, dass es für Ihre Seite einen RSS-Feed gibt, können Sie ein spezielles <link...>-Element in Ihre Seite einbauen (nicht in die Seite die den RSS-Feed erzeugt, sondern in Ihre „richtige“ Web Seite), z.B. so:

<head runat="server">

<title>.NET User Group Paderborn</title>

<link rel="alternate"

type="application/rss+xml"

title="Termine der .NET User Group Paderborn"

href="http://www.dotnet-paderborn.de/TermineRSS.aspx" />

<link rel="alternate"

type="application/rss+xml"

title="News der .NET User Group Paderborn"

href="http://www.dotnet-paderborn.de/NewsRSS.aspx" />

</head>

 

Dadurch kann man in diesem Beispiel im Internet Explorer 7 beide RSS-Feeds direkt über das RSS-Icon in der Toolbar des Internet Explorer auswählen.

Mehr dazu wird es voraussichtlich demnächst auch in einer MSDN Webcast-Serie zu AdventureWorks Cinema geben. Ich werde in einem Webcast die AdventureWorks Cinema Web Seite und das RSS-Projekt vorstellen, von anderen Teammitgliedern wird es weitere Webcasts geben, z.B. zum Server und zum Windows Client. Die genauen Termine gibt es hier im Blog sobald sie feststehen.

Außerdem werden wir AdventureWorks Cinema auf der NRW06 Community-Konferenz vorstellen.

Kick it on dotnet-kicks.de
Comments are closed.