2016-04-26 54 views
2

我有一個gridview有三列。網站名稱,網址,狀態。我從xml文件中獲取網站名稱和URL。獲取url frm xml文件後,我想ping網站。如果ping成功,則gridview中的狀態列將變爲綠色。如果ping失敗,則狀態欄會變爲紅色。如何ping網站並在gridview中顯示狀態

以下是我的代碼。

foreach (XmlNode node in nodeList) 
{ 
    string Instance = node.Attributes["name"].Value.Trim(); 
    foreach (XmlNode nodeChild in node.ChildNodes) 
    { 
     DataRow dr = dtIPCheckList.NewRow(); 

     dr["Instance"] = Instance; 
     dr["WebServer"] = nodeChild.Attributes["name"].Value.Trim(); 
     dr["URL"] = nodeChild.Attributes["IPFQDN"].Value.Trim(); 
     dr["Status"] = "GREEN"; //hardcoding at the moment. 
     dtIPCheckList.Rows.Add(dr); 
    } 
} 

現在我硬編碼的狀態,但我想ping和顯示狀態成功或失敗。

請指導我。

+0

你指的是單元格的顏色將是綠色的?或者文字會變成綠色?就像if(pingReply.Status!=「Success」){DR [「Status」] =「Red」;否則DR [「狀態」] =「綠色」;} –

回答

2

我只是寫了這個簡單的程序,它似乎工作:

namespace WebsitePingTest 
{ 
    using System; 
    using System.Data; 
    using System.Drawing; 
    using System.Net.NetworkInformation; 
    using System.Windows.Forms; 

    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      this.InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      var dt = new DataTable(); 
      dt.Columns.Add(new DataColumn("Websitename", typeof(string))); 
      dt.Columns.Add(new DataColumn("URL", typeof(string))); 
      dt.Columns.Add(new DataColumn("Status", typeof(string))); 

      var row = dt.NewRow(); 
      row["Websitename"] = "Google"; 
      row["URL"] = "www.google.com"; 
      dt.Rows.Add(row); 

      row = dt.NewRow(); 
      row["Websitename"] = "Yahoo"; 
      row["URL"] = "www.yahoo.com"; 
      dt.Rows.Add(row); 

      row = dt.NewRow(); 
      row["Websitename"] = "xasfjhasfkjh"; 
      row["URL"] = "www.xasfjhasfkjh.com"; 
      dt.Rows.Add(row); 

      var view = new DataView(dt); 
      this.dataGridView1.DataSource = view; 

      foreach (DataGridViewRow dataGridViewRow in dataGridView1.Rows) 
      { 
       var url = dataGridViewRow.Cells[1].Value.ToString(); 

       var ping = new Ping(); 

       PingReply result = null; 
       IPStatus status; 
       try 
       { 
        result = ping.Send(url); 
        status = result.Status; 
       } 
       catch (Exception ex) 
       { 
        status = IPStatus.DestinationHostUnreachable; 
       } 

       if (status != IPStatus.DestinationHostUnreachable) 
       { 
        dataGridViewRow.Cells[2].Style.BackColor = Color.Green; 
       } 
       else 
       { 
        dataGridViewRow.Cells[2].Style.BackColor = Color.Red; 
       } 
      } 
     } 
    } 
} 

Website Statuses

+0

非常感謝 – SJD