2012-12-10 74 views
0

我有一個預定義的DataGridView,我需要從DataTable中添加行而無需數據綁定。我試圖以編程方式使用DataGridView.Rows.Add()方法,但是,我不知道DataTable的列名稱。 DataTable中的列與DataGridView的順序相同,但如何在不知道列名的情況下將它們添加到DataGridView?將DataTable行添加到DataGridView中,無需綁定

回答

10

說你的DataGridView存在,但沒有列。你可以這樣做:

foreach (DataColumn dc in yourDataTable.Columns) { 

    yourDataGridView.Columns.Add(new DataGridViewTextBoxColumn()); 

} 

然後添加行數據:

foreach(DataRow dr in yourDataTable.Rows) { 

    yourDataGridView.Rows.Add(dr.ItemArray); 

} 

現在,如果默認的文本框列是不夠的,你可能需要創建與不同小區的模板列。

+0

Item.Array的伎倆,簡單到如此地步。非常感謝您的回覆! – user10001110101

0

如果你的DataGridView沒有行和列,那麼就

yourDataGridView.DataSource = yourDataTable 

將盡一切工作。

如果你的DataGridView已經有界的一些數據源(如果你使用數據表,然後我猜的數據源是數據表),

,那麼你需要編輯yourDataTable - >從老DataTable中添加舊的行(或從DataGridView如果老數據表不能訪問了)

foreach(DataRow dr in oldDataTable.Rows) 
{ 
    yourDataTable.Rows.Add(dr); 
} 
yourDataGridView.DataSource = yourDataTable; 

或編輯oldDataTable - >從yourDataTable添加新行,是這樣的:

DataTable dtOld = (DataTable)yourDataGridView.DataSource; 
foreach(DataRow yourdr in yourDataTable.Rows) 
{ 
    dtOld.Rows.Add(yourdr); 
} 
yourDataGridView.DataSource = dtOld; 
0

它看來,你想從DataTable列名和數據表,從行

  DataTable myDataTable = new DataTable(); 
      //adding Columns 
      myDataTable.Columns.Add("colInt", typeof(int)); 
      myDataTable.Columns.Add("colDate", typeof(DateTime)); 
      myDataTable.Columns.Add("colString", typeof(string)); 

      //adding Rows 
      myDataTable.Rows.Add(1, DateTime.Now, "Hello World"); 

      //to get columns 
      foreach (DataColumn col in myDataTable.Columns) 
      { 
       var c = new DataGridViewTextBoxColumn() { HeaderText = col.ColumnName }; //Let say that the default column template of DataGridView is DataGridViewTextBoxColumn 
       dataGridView1.Columns.Add(c); 
      } 

      //to get rows 
      foreach (DataRow row in myDataTable.Rows) 
      { 
       dataGridView1.Rows.Add(row[0], row[1], row[2]); 
      } 

添加行的DataGridView反正有一個快捷方式 dataGridView1.DataSource = myDataTable;

相關問題