c# - 如何 ping 网站并在 gridview 中显示状态

标签 c# asp.net gridview

我有一个包含三列的 GridView 。网站名称、URL、状态。我从 xml 文件获取网站名称和 URL。获取 url frm xml 文件后,我想 ping 该网站。如果 ping 成功,则 gridview 中的状态栏将为绿色。如果 ping 失败,则状态栏将为红色。

下面是我的代码。

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 操作并显示状态。

请指导我。

最佳答案

我刚刚编写了这个简单的程序,它似乎可以工作:

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

关于c# - 如何 ping 网站并在 gridview 中显示状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870121/

相关文章:

C#考试应用程序计时器作弊问题

c# - EF 4.1 双向一对一问题

c# 如何将字符串添加到列表中,以便可以从 DataSource 访问它们

asp.net web.config 加密 - 找不到 RSA key 容器

ASP.NET 使用 jQuery 访问当前 session

c# - 将 SignalR Hub 与 ASP.NET MVC 5 项目一起使用时,如何访问用户在 Identity 2 中的声明?

dictionary - Flutter ExpansionTile child 作为 Gridview?

android - android中ScrollView中的GridView问题

c# - SendMessage() 仅在窗口打开时有效,在最小化时无效

qt - QML GridView 隐藏一个单元格