2017-10-19 18 views
-1

天気予報APIプロジェクトを行っています。今後7日間の気象情報がメッセージボックスに正常に表示されます。XMLデータをデータグリッドに表示

メッセージボックスの代わりに、どのようにしてすべてのデータをdatagridviewで表示できますか?

これが私の現在の作業コードです:DataTableのに

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アカウントは閉鎖されるか、請求されるかもしれません。 –

関連する問題