2011-10-14 42 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;