kobinath Ответов: 1

Weather API display images in C#


Я хочу отобразить информацию о погоде на предстоящую неделю в datagridview. я успешно добавил API погоды, который будет успешно воспроизводить все записи, только проблема в том, что изображение не воспроизводится в datagrid, помогите мне решить эту проблему.

как отобразить изображение в datagridview. я попробовал код ниже. пожалуйста, помогите мне закончить это спасибо

Что я уже пробовал:

private void button2_Click(object sender, EventArgs e)
               {
                   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(string));

                   string city = "london";


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

                   XDocument doc = XDocument.Load(uri);
                   foreach (var npc in doc.Descendants("forecastday"))
                   {




                       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(),
                           (string)npc.Descendants("http" + "icon").FirstOrDefault()
                       });

                   }
                   dataGridView1.DataSource = dt;

                //   getW(txttext.Text);

               }
           }
       }

1 Ответов

Рейтинг:
1

Karthik_Mahalingam

пробовать

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
     {
         if (dataGridView1.Columns[e.ColumnIndex].Name == "Icon")
         {
             e.Value = GetImageFromUrl(e.Value.ToString() );
         }

     }


     public static Image GetImageFromUrl(string url)
     {
         HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);

         using (HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse())
         {
             using (Stream stream = httpWebReponse.GetResponseStream())
             {
                 return Image.FromStream(stream);
             }
         }
     }



     private void Form1_Load(object sender, EventArgs e)
     {
         dataGridView1.AllowUserToAddRows = false;
         DataGridViewImageColumn imageCol = new DataGridViewImageColumn();
         imageCol.Name = "Icon";
         imageCol.DataPropertyName = "Icon";
         dataGridView1.Columns.Add(imageCol);

          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(string));

                string city = "london";


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

                XDocument doc = XDocument.Load(uri);
                foreach (var npc in doc.Descendants("forecastday"))
                {

                    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(),
                         "http:" +(string)npc.Descendants( "icon").FirstOrDefault()
                    });

                }
                dataGridView1.DataSource = dt;



            }


вежливость: как добавить pic в dataGridView из url-адреса ?[^]


kobinath

некоторая ошибка исключения, показанная в окне сообщения

Karthik_Mahalingam

Что такое сообщение об ошибке