2013-10-08 16 views
0

在我的Page_Load事件加载RSS馈送到GridView的数据源

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

这将填充GridView控件如下图所示

enter image description here

数据集包含8个数据表:频道,标题,链接,进入,等级,类别,作者,摘要

DataTable [2]例如,包含最近发布的30条帖子的链接,如上所示。


我要的是为GridView显示每个记录频道,标题,链接,进入,等级,类别,作者,摘要

但是,当我指定输入数据集的数据源,它只是填充GridView,就好像我已经为它分配了DataTable [0]对象...是父提要的标题信息。

回答

2

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

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

但是,如果所有的表都有着相同的架构(这不太可能),那么你可以手动倾销行创建一个新的DataTable,然后绑定。

没有在这个岗位 Add data from two databases into one gridview

+1

这也恰恰说明。该记录的“链接”信息...并非所有8栏正在饲料,标题,链接,条目,排名等... – adam

+1

哦!我的道歉,我以为你试图显示只是“链接” 但是,我我不确定你是否能够实现你想要的,除非所有这些表都具有相同的模式。如果所有这些表都有相同的sc hema,那么你可能需要在绑定之前将它们转储到一个临时表中。 –

+0

那么有没有办法将XML与我需要的信息组合成单个DataTable?我怎样才能最好地使数据可用的最终结果? – adam

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等,否则,这是不可能的

+0

那么有没有一种方法可以将XML与我需要的信息组合成单个DataTable?我怎样才能最好地使数据可用的最终结果? – adam