2011-10-14 2 views
1

나는 아래 코드를 가지고 있으며, 지정된 횟수만큼 웹 주소를 핑하고 있는데 매번 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; 
     } 
    } 
} 

많은 덕분에, J

+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); 

다른 방법이 있습니다,하지만 난이 간단한 생각 당신은 열 이름을 지정할 수 있습니다와 당신이 필요로 할 때 당신은 다른 물건을 추가 할 수 있습니다 대신 목록으로 DataTable을 사용할 수 있습니다. 당신이 문자열 래퍼 클래스를 사용할 수

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

을 또는 : 당신은 .NET 프레임 워크 3.5 또는 4.0을 사용하는 경우

2

, 당신을 System.Linq에 사용 조항을 추가하고 다음을 수행 할 수 있습니다 : 그런 다음

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;