使用System.ServiceModel.Syndication分页RSS

时间:2014-04-11 03:18:19

标签: c# asp.net listview rss paging

我尝试使用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<>之类的内容,我不确定如何使用该控件?

1 个答案:

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