我尝试使用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<>
之类的内容,我不确定如何使用该控件?
答案 0 :(得分:1)
经过一些试验和错误并阅读DataPager
我想出了以下解决方案,现在效果非常好!
首先,我为我的对象创建了一个类,使用它为我的ListView
设置一个select-method,在页面加载时启动将数据绑定到它。这里的技巧是使用ICollection
接口,并将数据发送到列表。这是select-method现在正在运行的代码,希望它可以帮助别人面对同样的问题! :)
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;
}