2011-03-29 4 views
0

데이터 테이블이 10 개이지만 사용자가 표시 할 열을 선택할 수 있으므로 선택한 열만 표시하기 위해 일반 코드를 만들어야합니다.데이터 테이블에서 선택한 열을 얻는 방법

Current code: 
    string[] selectedColumns = new[] { }; 
    DataTable columns = new DataView(table).ToTable(false, selectedColumns); 

답변

1

당신은 단순히 DataGridView에있는 열을 숨길 수 selectedColumns

에없는하지만 당신이 정말로 필터링해야하는 경우 그 모든 컬럼에 대해

dataGridView1.Columns["ColName"].Visible = False; 

(하나를 사용하는 가정하면) 데이터 세트에서 다음과 같이 할 수 있음을 기억합니다.

mydatatable.Columns.Remove("ColName"); 

또는 사본에. '당신이있는 DataGridView의 열을 표시하려는 경우

, 내 옵션은 내가 지금 집에 아니에요 불행히도이

mydatatable.Columns["Colname"].ColumnMapping = MappingType.Hidden; 

같은 데이터 테이블 컬럼의 ColumnMapping 속성을 설정하는 것입니다, 그래서 내가 할 수있는 테스트 해보지 만, 알다시피 많은 옵션이 있습니다.

편집 : 귀하의 요청에 대한 응답으로이 같은 비 선택된 열을 처리 할 수 ​​있습니다

for(int i = 0;i<dt.Columns.Count;i++) 
    { 
     if(!selectedColumns.Contains(dt.Columns[i].ColumnName)) 
     { 
      dt.Columns[i].ColumnMapping = MappingType.Hidden; 
     } 
    } 
+0

은 어떻게하지 선택한 열 목록을 가져 말해 수 있습니다. – psobhan

+0

질문 편집되지 않은 열을 가져 오도록 편집되었습니다. – Jonathan

0
public static void Main(string[] args) 
    { 
     DataTable act = new DataTable(); 
     act.Columns.Add(new DataColumn("id", typeof(System.Int32))); 
     act.Columns.Add(new DataColumn("name")); 
     act.Columns.Add(new DataColumn("email")); 
     act.Columns.Add(new DataColumn("phone")); 

     DataRow dr = act.NewRow(); 
     dr["id"] = 101; 
     dr["name"] = "Rama"; 
     dr["email"] = "[email protected]"; 
     dr["phone"] = "0000000001"; 
     act.Rows.Add(dr); 

     dr = act.NewRow(); 
     dr["id"] = 102; 
     dr["name"] = "Talla"; 
     dr["email"] = "[email protected]"; 
     dr["phone"] = "0000000002"; 
     act.Rows.Add(dr); 

     dr = act.NewRow(); 
     dr["id"] = 103; 
     dr["name"] = "Robert"; 
     dr["email"] = "[email protected]"; 
     dr["phone"] = "0000000003"; 
     act.Rows.Add(dr); 

     dr = act.NewRow(); 
     dr["id"] = 104; 
     dr["name"] = "Kevin"; 
     dr["email"] = "[email protected]"; 
     dr["phone"] = "0000000004"; 
     act.Rows.Add(dr); 

     dr = act.NewRow(); 
     dr["id"] = 106; 
     dr["name"] = "TomChen"; 
     dr["email"] = "[email protected]"; 
     dr["phone"] = "0000000005"; 
     act.Rows.Add(dr); 

     var lselColumns = new[] {"id", "name"}; 
     var dt = act.DefaultView.ToTable(true, lselColumns); 
     foreach (DataRow drow in dt.Rows) 
     { 
      string drowData = string.Empty; 

      foreach (DataColumn r in drow.Table.Columns) 
      { 
       drowData += (drowData == string.Empty) ? drow[r] : "|" + drow[r]; 
      } 
      Console.WriteLine(drowData); 

     } 
     Console.ReadLine(); 
    } 
관련 문제