2016-06-02 6 views
1

ping.exeプログラムのWebフォームを作成しようとしていますが、このようになります。私は結果をtextbox2に動的に挿入し、pingコマンドが表示するのと同じようにしたい。それはどうやって? (私はスタートボタンを押すと、それは、数秒待ってから、一度にすべての結果を出力します!)ASP.NET:結果を動的にテキストボックスに表示

enter image description here

using System; 
using System.Net.NetworkInformation; 
using System.Threading; 
using System.Text; 

public partial class ping : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    //------------------------------------------------------------------------------- 
    protected void Button1_Click(object sender, EventArgs e) 
    { 

     string ip = TextBox1.Text; 
     string nn = DropDownList1.SelectedItem.Text.ToString(); 
     int n = int.Parse(nn); 

     Ping PingSender = new Ping(); 
     PingOptions PingOpt = new PingOptions(); 
     StringBuilder sb = new StringBuilder(); 

     for (int i = 0; i <= n; i++) 
     { 
      PingReply reply = PingSender.Send(ip); 
      var ttl = reply.Options.Ttl; 
      var rt = reply.RoundtripTime; 

      sb.Append(Environment.NewLine + reply.Address + "\t" + ttl + "\t" + rt); 
      TextBox2.Text = sb.ToString(); 

      Thread.Sleep(1000); 
     }     
    } 
} 

答えて

1

これは、AJAXを用いて達成することができるとjQuery.Hereの例:

コードの後ろ:

public partial class PingThings : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    [WebMethod] 
    public static string GetPing(string ipAddress) 
    { 
     Ping PingSender = new Ping(); 
     PingOptions PingOpt = new PingOptions(); 
     StringBuilder sb = new StringBuilder(); 

     PingReply reply = PingSender.Send(ipAddress); 
     var ttl = reply.Options.Ttl; 
     var rt = reply.RoundtripTime; 

     sb.Append(Environment.NewLine + reply.Address + "\t" + ttl + "\t" + rt); 

     return sb.ToString(); 
    } 
} 

.ASPX:

<head runat="server"> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 

      var timer; 
      var times = 0; 
      var maxTimes = 0; 

      $("#btnOK").click(function() { 

       $("#results").empty(); 
       times = 0; 
       maxTimes = $("#" + '<%=DropDownList1.ClientID%>').val(); 
       timer = setInterval(doAjax, 5000); 

      }); 

      function doAjax() { 

       var ipAddress = $("#ipAddress").val(); 

       $.ajax({ 
        type: "POST", 
        url: 'PingThings.aspx/GetPing', 
        data: '{ipAddress:"' + ipAddress + '"}', 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (response) { 

         $("#results").append("<div>" + response.d + "</div>"); 

         times++; 

         if(times >= maxTimes) 
         { 
          clearTimeout(timer); 
         } 


        }, 
        failure: function (response) { 
         alert(response.d); 
        } 
       }); 
      } 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
     IP&nbsp;<input type="text" id="ipAddress" /> 
     <asp:DropDownList ID="DropDownList1" runat="server" Width="300"> 
      <asp:ListItem>1</asp:ListItem> 
      <asp:ListItem>2</asp:ListItem> 
      <asp:ListItem>3</asp:ListItem> 
      <asp:ListItem>4</asp:ListItem> 
      <asp:ListItem>5</asp:ListItem> 
     </asp:DropDownList> 
     <input type="button" id="btnOK" value="OK" /> 
     <div id="results"></div> 
    </form> 
</body> 
関連する問題