【问题标题】:Load RSS feeds into GridView's DataSource将 RSS 提要加载到 GridView 的数据源中
【发布时间】:2013-10-15 21:56:45
【问题描述】:

在我的 Page_Load 事件中

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

这会填充 GridView,如下所示

DataSet 包含 8 个数据表:Feed、Title、Link、Entry、Rank、Category、Author、Summary

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


我想要的是让 GridView 显示每条记录Feed、Title、Link、Entry、Rank、Category、Author、Summary

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

【问题讨论】:

    标签: c# xml gridview rss datasource


    【解决方案1】:

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

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

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

    本文还描述了另一种情况 Add data from two databases into one gridview

    【讨论】:

    • 这也只是显示了记录的“链接”信息...并非所有 8 列都是 Feed、标题、链接、条目、排名等...
    • 哦!我很抱歉。我以为你只是想显示“链接”。但是,除非所有这些表都具有相同的架构,否则我不确定您是否能够实现您想要的目标。如果所有这些表都具有相同的架构,那么您可能需要在绑定之前将它们转储到一个临时表中。
    • 那么有没有办法获取 XML 并使用我需要的信息使其形成单个 DataTable?我怎样才能最好地利用可用的数据实现所需的最终结果?
    【解决方案2】:

    无法将多个表中的数据组合起来,一次绑定到一个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 等)时才有可能。否则,这是不可能的。

    【讨论】:

    • 那么有没有办法获取 XML 并使用我需要的信息使其形成单个 DataTable?我怎样才能最好地利用可用的数据实现所需的最终结果?
    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多