2013-10-08 33 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