2011-10-14 475 views
1

我有下面的代碼,我ping一個網絡地址指定的次數,每次將ping時間添加到一個名爲resultsList的數組。C#數據網格視圖

然後我想設置resultsList作爲我的數據網格視圖的數據源。

resultsList正在填充ping值。

但它只是填充我的數據網格視圖與2。

任何想法?

using System; 
using System.Collections.Generic; 
using System.Net; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Net.NetworkInformation; 

namespace Ping_Application 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void pingButton_Click(object sender, EventArgs e) 
     { 
      List<string> resultsList = new List<string>(); 
      for (int indexVariable = 1; indexVariable <= timesToPing.Value; indexVariable++) 
      { 
       string stat = ""; 
       Ping pinger = new Ping(); 
       PingReply reply = pinger.Send(pingAddressTextBox.Text); 
       if (reply.Status.ToString() != "Success") 
        stat = "Failed"; 
       else 
        stat = reply.RoundtripTime.ToString(); 
       pinger.Dispose(); 
       resultsList.Add(stat); 
      } 
      resultsGrid.DataSource = resultsList; 
     } 
    } 
} 

非常感謝, Ĵ

+0

你的意思是2行嗎?或者與2號? – GianT971

+0

只有數字2 - 重複了很多次,我跑了我的Ping。與我將數據傳遞到數據網格視圖的方式有關? – JHarley1

+0

一件事,你將需要一個resultsGrid.DataBind()來顯示數據。如果你沒有,就把它放在.DataSource行後面。 – nycdan

回答

2

您綁定到每個字符串的長度。 您可以使用數據表,而不是一個列表:

DataTable resultsList = new DataTable(); 
resultsList.Columns.Add("Time", typeof(String)); 
... 
resultsList.Rows.Add(stat); 

還有其他的方法,但我認爲這是最簡單的,你可以命名列,當你需要,你可以添加其他的東西。

2

如果您使用.NET Framework 3.5或4.0,您可以使用一個條款添加到System.Linq的,並做到以下幾點:

resultsGrid.DataSource = resultsList.Select(x => new { Value = x }).ToList(); 

或者,你可以使用一個字符串包裝類:

public class StringWrapper 
{ 
    public StringWrapper(string s) 
    { 
     Value = s; 
    } 
    public string Value { get { return _value; } set { _value = value; } } 
    string _value; 
} 

然後你聲明的變量是這樣的:

List<StringWrapper> resultsList = new List<StringWrapper>(); 

而且添加內容是這樣的:

resultsList.Add(new StringWrapper(stat)); 

然後你可以綁定的數據,你去:「但是它只是填補了我的數據網格視圖2的」

resultsGrid.DataSource = resultsList;