2013-10-01 2 views
16

DataTable을 내 DataGridView에 바인드해야합니다. 나는이 수행데이터 테이블을 C로 묶는 방법 #

 DTable = new DataTable(); 
     SBind = new BindingSource(); 
     //ServersTable - DataGridView 
     for (int i = 0; i < ServersTable.ColumnCount; ++i) 
     { 
      DTable.Columns.Add(new DataColumn(ServersTable.Columns[i].Name)); 
     } 

     for (int i = 0; i < Apps.Count; ++i) 
     { 
      DataRow r = DTable.NewRow(); 
      r.BeginEdit(); 
      foreach (DataColumn c in DTable.Columns) 
      { 
       r[c.ColumnName] = //writing values 
      } 
      r.EndEdit(); 
      DTable.Rows.Add(r); 
     } 
     SBind.DataSource = DTable; 
     ServersTable.DataSource = SBind; 

을하지만 내가 가진 모든 DataTable을DataGridView에에 NEW 열을 추가합니다. 이 항목이 필요하지 않습니다. 기존 열 아래에 작성하면됩니다. 제발, 도와주세요!

+1

당신은 어떤'DataSet'이 없어, 당신은 단지'BindingSource'과'DataTable' 있습니다. 'BindingSource'는 비어 있습니다. –

답변

16

이 시도 :

for (int i = 0; i < ServersTable.ColumnCount; ++i) { 
    DTable.Columns.Add(new DataColumn(ServersTable.Columns[i].Name)); 
    ServersTable.Columns[i].DataPropertyName = ServersTable.Columns[i].Name; 
} 
+0

나는 이미 그 일을하고 있으며, 그 것을 게시물에 포함하는 것을 잊어 버렸다. –

+0

@ Greag.Deay 내 업데이트 된 답변보기 –

+0

예! 정말 고마워 !!! –

9

더 나은 : 당신이 기존의 모든 열을 삭제하지 않으려면

ServersTable.Columns.Clear(); 
    ServersTable.DataSource = SBind; 

, 당신은이 같은 기존의 각 열에 대한 DataPropertyName을 설정해야합니다 :

DataTable DTable = new DataTable(); 
BindingSource SBind = new BindingSource(); 
SBind.DataSource = DTable; 
DataGridView ServersTable = new DataGridView(); 

ServersTable.AutoGenerateColumns = false; 
ServersTable.DataSource = DTable; 

ServersTable.DataSource = SBind; 
ServersTable.Refresh(); 

바인딩 할 수있는 출처 DataTable에 DataGridView에 열을 자동으로 생성하지 않도록 지시해야합니다. 그러면 컨트롤에 수동으로 입력 한 열에 대한 데이터 만 가져옵니다. 마지막으로 컨트롤을 새로 고쳐서 데이터 바인딩을 업데이트합니다. .

+0

네가 옳은 것처럼 보이지만 지금은 채워진 셀이없는 새로운 빈 행을 추가한다. datagridview와 같이 어떤 열을 채워야하는지 알지 못합니다. –

+1

SBind.DataMember (일반적으로 행의 ID)를 표현해야합니다. 그리고 각 열에 대해 DataPropertyName을 설정해야합니다 (예 : http://stackoverflow.com/questions/9154130/fill-specific-columns-in-datagridview-from-mysql-data-vb-net –

+0

예). DataGridView에서 DataPropertyName을 설정해야합니다. 그 후,이 솔루션은 매력처럼 작동합니다. 고마워. – FrenkyB

3

DataGridView에서 열의 DataPropertyName을 DataTable의 열 이름으로 설정합니다.

0
foreach (DictionaryEntry entry in Hashtable) 
{ 
    datagridviewTZ.Rows.Add(entry.Key.ToString(), entry.Value.ToString()); 
} 
관련 문제