Permalänk

[ASP/C#] XmlTextReader

Försöker sätta ihop en RSS-läsare med hjälp av XmlTextReader kopplad till en DataList.

Det funkar, men det sättet jag kopplar dem på tillåter mig inte begränsa antalet poster som läses in i datalistan.

Eftersom jag inte är så hajj på detta så undrar jag hur jag skulle kunna få ex. endast de tre senaste posterna att visas.

Det enklaste hade väl varit om datalistan hade någon egenskap som begränsar antalet rader, antar jag, men ingen sån hittar jag i dokumentationen.

C#:

XmlTextReader reader = null; try { reader = new XmlTextReader("http://www.codedigest.com/Articles/Rss.ashx"); DataSet ds = new DataSet(); ds.ReadXml(reader); dlRSS.DataSource = ds.Tables["item"]; dlRSS.DataBind(); } catch (Exception ex) { lblMessage.Text = ex.Message; } finally { reader.Close(); }

ASP.NET:

<asp:DataList ID="dlRSS" runat="server" Width="100%"> <ItemTemplate> <div class="RSSTitle"><asp:HyperLink ID="TitleLink" runat="server" Text='<%# Eval("title") %>' NavigateUrl='<%# Eval("link") %>'/></div> <div class="RSSSubtitle"><asp:Label ID="SubtitleLabel" runat="server" Text='<%# Eval("description") %>' /></div> <div class="RSSInfo"> posted on <asp:Label ID="DateRSSedLabel" runat="server" Text='<%# Eval("pubDate", "{0:d} @ {0:t}") %>' /> </div> </ItemTemplate> </asp:DataList>

Koden är hämtad ur tutorialen här btw: http://www.codedigest.com/Articles/ASPNET/80_RSS_Reader_in_AS...

Permalänk

Testa nåt sånt här:

var dtb = ds.Tables["item"].AsEnumerable().Take(5);

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk

Det ger inget kompileringsfel att göra så här:

ds.ReadXml(reader); dlRSS.DataSource = ds.Tables["item"].AsEnumerable().Take(10);

Men det hänger sig sedan när sidan startar pga. något strul i asp-kodraden:

<div class="RSSTitle"><asp:HyperLink ID="TitleLink" runat="server" Text='<%# Eval("title") %>' NavigateUrl='<%# Eval("link") %>'/></div>

Där ger den följande felkod:
HTTPException was unhandled by user code.
DataBinding: 'System.Data.DataRow' does not contain a property with the name 'title'.

Konstigt. Kan det vara så att den parsar xml-datan annorlunda med det tillägget? Eller har jag helt enkelt använt fel syntax (du skrev ju lite annorlunda)? Eller funkar det helt enkelt inte med databindningen till en DataList?