我正在尝试使用
RSS-feed
对从 System.ServiceModel.Syndication
获得的帖子进行分页。但是我不知道如何做到这一点以及最好的方法是什么。
到目前为止,我使用
Listview
来呈现在我的代码隐藏中获取的数据:
// Link to the RSS-feed.
string rssUri = "feed.xml";
var doc = System.Xml.Linq.XDocument.Load(rssUri);
// Using LINQ to loop out all posts containing the information i want.
var rssFeed = from el in doc.Elements("rss").Elements("channel").Elements("item")
select new
{
Title = el.Element("title").Value,
PubDate = el.Element("pubDate").Value,
Enclosure = el.Element("enclosure").Attribute("url").Value,
Description = el.Element("description").Value
};
// Binding the data to my listview, so I can present the data.
lvFeed.DataSource = rssFeed;
lvFeed.DataBind();
那么我该去哪里呢?我猜一种方法是在我的
DataPager
中使用 Listview
?但是我不确定如何使用该控件,我应该将所有数据发送到某个列表或类似 IEnumerable<>
的内容吗?
经过一番尝试和错误并阅读了
DataPager
后,我想出了以下解决方案,现在效果很好!
首先,我为我的对象创建了一个类,并使用它为我的
ListView
设置了一个选择方法,在页面加载时将数据绑定到它。这里的技巧是使用 ICollection
接口,并将数据发送到列表。这是该选择方法现在有效的代码,希望它可以帮助其他人解决同样的问题! :)
ICollection<Podcast> SampleData()
{
string rssUri = "http://test.test.com/rss";
var doc = System.Xml.Linq.XDocument.Load(rssUri);
ICollection<Podcast> p = (from el in doc.Elements("rss").Elements("channel").Elements("item")
select new Podcast
{
Title = el.Element("title").Value,
PubDate = el.Element("pubDate").Value,
Enclosure = el.Element("enclosure").Attribute("url").Value,
Description = el.Element("description").Value
}).ToList();
return p;
}