2012-12-03 2 views
0

저는 며칠 동안이 작업에 어려움을 겪었으며 DataTables와 dataGridViews가 모두 뒤섞여 있습니다.데이터 테이블에 콤보 상자 열을 만드는 방법

DataGridView, dataGridView1 및 DataTable 오류가있는 WinForms 프로그램이 있습니다.

errors.Columns.Add("Account Number"); 
errors.Columns.Add("Customer Name"); 
errors.Columns.Add("Country"); 
errors.Columns.Add("State"); 
errors.Columns.Add("Ship-to Country"); 
errors.Columns.Add("Ship-to State"); 

var lines = File.ReadAllLines(file); 

    foreach (string line in lines) 
    {. 
    . 
    . 
    string []items=line.Split('\t').ToArray(); 
    errors.Rows.Add(items[0], items[1],...items[5]); 
:

public static DataTable errors = new DataTable(); 
dataGridView1.DataSource = errors; 

이제, 상기 다운 ValidateText 불리는 방법으로, I는 I는 데이터 테이블 오류의 열을 정의하는 배열로 텍스트 파일, 라인별로 라인에서 데이터 읽기

그리고 그것을 실행할 때 잘 작동합니다. 문제는, "국가"열에 콤보 상자가 있으므로 프로그램이 실행될 때 데이터가 dataGridView1에 표시되면 사용자가 새 국가를 선택할 기회를 갖게됩니다. '국가'항목에서 그리고 더 아래 프로그램에서, 나는 참으로 DataGridViewComboBoxColumn을 만드는 방법을 정의한

private DataGridViewComboBoxColumn CreateComboBoxColumn() 
    { 
     DataGridViewComboBoxColumn buildCountries = new DataGridViewComboBoxColumn(); 
     buildCountries.HeaderText = "List of Countries"; 
     DataTable dataTable = new DataTable(); 
     dataTable.Columns.Add("Keys"); 
     dataTable.Columns.Add("Values"); 
     KeyValuePair<string, string>[] array = CountryList.ToArray(); 
     foreach (KeyValuePair<string, string> kvp in array) 
     { 
      dataTable.Rows.Add(kvp.Key, kvp.Value); 
     } 
     buildCountries.DataSource = dataTable; 
     buildCountries.DisplayMember = "Values"; 
     buildCountries.ValueMember = "Keys"; 

     return buildCountries; 


    } 

내가, 내가 그에서 만든 그 콤보 상자를 얻는 방법입니다 함께하는 데 문제가 건 마지막 방법으로 위에서 만든 '국가'항목에 추가 할 수 있습니까? DataGridView 및 DataTable을 사용하여 뭔가를 얻지 못하는 것 같습니다. DataTable을 DataGridView에 바인딩하지만이 DataGridViewComboBoxColumn을 추가하는 것은 어려운 것처럼 보입니다.

감사합니다,

아만다

답변

1

이 내 제안, .NET 프레임 워크는 국가의 이미 목록을 가지고있다. 그래서이 클래스를 사용할 수 있습니다. 이 코드를 만든 사람을 잊어 버렸습니다. :)

public static class CountryEntries 
    { 
     public static IEnumerable<Country> GetCountries() 
     { 
      return from ri in 
         from ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures) 
         select new RegionInfo(ci.LCID) 
         orderby ri.DisplayName 
        group ri by ri.TwoLetterISORegionName into g      
        select new Country 
        { 
         CountryId = g.Key, 
         Title = g.First().DisplayName 
        }; 
     } 
     public class Country 
     { 
      public string CountryId { get; set; } 
      public string Title { get; set; } 
     } 
    } 
관련 문제