将RSS提要加载到GridView DataSource中

时间:2013-10-08 19:41:04

标签: c# xml gridview rss datasource

在我的Page_Load事件

DataSet oDs = new DataSet();
oDs.ReadXml("http://stackoverflow.com/feeds");
gvFeeds.DataSource = oDs.Tables[2];
gvFeeds.DataBind();

这将填充GridView,如下所示

enter image description here

DataSet包含8个DataTables: Feed,Title,Link,Entry,Rank,Category,Author,Summary

例如,

DataTable [2]包含30个最新帖子的链接,如上所示。


我想要的是GridView显示每个记录 Feed,标题,链接,条目,排名,类别,作者,摘要

但是,当我将输入DataSet分配给DataSource时,它只是填充GridView,好像我已经为它分配了DataTable [0]对象...作为父提要的标题信息。

2 个答案:

答案 0 :(得分:2)

您只能将GridView绑定到一个表。 例如,使用以下将绑定到“链接”表。

gvFeeds.DataSource = oDs;
gvFeeds.DataMember = "Link";
gvFeeds.DataBind();

但是,如果所有表共享相同的模式(不太可能),那么您可以通过转储行然后绑定它来手动创建新的DataTable。

本文还介绍了另一个场景 Add data from two databases into one gridview

答案 1 :(得分:0)

无法组合来自各种表的数据并一次将其绑定到单个gridView。

编辑:

        //Considering you have all the tables that share the same schema
        //i.e. All are having same column names and types

        //Create an In Memory DataTable
        DataTable consolidateTable = new DataTable("ConsolidatedTable");

        //Add columns with that is same across all of you tables
        consolidateTable.Columns.Add(new DataColumn("firstColumn"));
        consolidateTable.Columns.Add(new DataColumn("secondColumn"));
        //etc..

        //Now go through each record of each table
        foreach (DataTable dt in oDs.Tables)
        {
            foreach (DataRow row in dt.Rows)
            {
                consolidateTable.Rows.Add(row);
            }
        }

        //bind
        gvFeeds.DataSource = consolidateTable;
        gvFeeds.DataBind();

请注意,只有当所有表具有相同的模式(即相同的firstColumn,secondColumn等)时才可以这样做。否则,这是不可能的。