2017-10-19 75 views
-1

我正在做一個天氣API項目。即將到來的7天天氣信息在消息框中顯示成功。在datagrid中顯示XML數據

而不是消息框,如何顯示所有數據與datagridview?

這是我目前的工作代碼:

string uri = string.Format("http://api.apixu.com/v1/forecast.xml?key=keygoeshere&q={0}&days=7", city); 
      XDocument doc = XDocument.Load(uri); 
      foreach (var npc in doc.Descendants("forecastday")) 
      { 
       MessageBox.Show((string)npc.Descendants("date").FirstOrDefault()); 
       MessageBox.Show("Max temp " + (string)npc.Descendants("maxtemp_c").FirstOrDefault()); 
       MessageBox.Show("Min temp " + (string)npc.Descendants("mintemp_c").FirstOrDefault()); 
       MessageBox.Show("Text " + (string)npc.Descendants("text").FirstOrDefault()); 
       MessageBox.Show("Icon " + (string)npc.Descendants("http"+"icon").FirstOrDefault()); 

      } 

回答

1

數據放入數據表,然後進行DataTable中的DGV的數據源。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Xml; 
using System.Xml.Linq; 
using System.Net; 
using System.IO; 
namespace WindowsFormsApplication3 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 


      DataTable dt = new DataTable(); 
      dt.Columns.Add("Date", typeof(string)); 
      dt.Columns.Add("Max Temp", typeof(string)); 
      dt.Columns.Add("Min Temp", typeof(string)); 
      dt.Columns.Add("Text", typeof(string)); 
      dt.Columns.Add("Icon", typeof(Bitmap)); 

      string city = "London"; 


      string uri = string.Format("http://api.apixu.com/v1/forecast.xml?key=keygoeshere&q={0}&days=7", city); 

      XDocument doc = XDocument.Load(uri); 
      foreach (var npc in doc.Descendants("forecastday")) 
      { 
       string iconUri = (string)npc.Descendants("icon").FirstOrDefault(); 
       WebClient client = new WebClient(); 
       byte[] image = client.DownloadData("http:" + iconUri); 
       MemoryStream stream = new MemoryStream(image); 



       Bitmap newBitMap = new Bitmap(stream); 
       dt.Rows.Add(new object[] { 
        (string)npc.Descendants("date").FirstOrDefault(), 
        (string)npc.Descendants("maxtemp_c").FirstOrDefault(), 
        (string)npc.Descendants("mintemp_c").FirstOrDefault(), 
        (string)npc.Descendants("text").FirstOrDefault(), 
        newBitMap 
       }); 

      } 
      dataGridView1.DataSource = dt; 
     } 
    } 
} 
+0

不錯的工作謝謝。但圖像不顯示幫助我 – user3489210

+0

代碼現在顯示圖像。 – jdweng

+0

@jdweng我冒昧地將OP的密鑰編輯出來。如果有人想使用它,他們可以免費獲得自己的鑰匙。否則,OP的apixu賬戶可能會被關閉或收取費用,如果很多人開始使用它。 –