2016-11-14 19 views
0

我需要逐行追加行。下面的代碼只會添加當前行,以及如何在現有行上添加行?將行附加到foreach中的數據表c#

DataTable dt = new .DataTable(); 
dt.Columns.Add("Name", typeof(string)); 
dt.Columns.Add("Property", typeof(string)); 
DataRow row = dt.NewRow(); 

foreach (Object form in Obj) 
{ 
    string str1 = "hi"; 
    string str2 = "hey"; 
    row["Name"] = str1; 
    row["Property"] = str2; 
    dt.Rows.Add(row); 
} 

真的很感謝您的建議嗎?

更新1:

我的實際代碼

System.Data.DataTable dt = new System.Data.DataTable(); 
dt.Columns.Add("Name", typeof(string)); 
dt.Columns.Add("Property", typeof(string)); 

if (crobj.SourceName.StartsWith("{@")) 
    { 
    foreach (CRObject crform in lstObj) 
     { 
     if (crform.FormulaForm == crobj.SourceName) 
      {                
      System.Data.DataRow newRow = dt.NewRow(); 
      newRow["Name"] = "hi"; 
      newRow["Property"] = "hey";                
      dt.Rows.Add(newRow); 
      }               
     } 
    } 
+2

'DataRow row = dt.NewRow();'應該在循環中。 – Equalsk

回答

0

小變化:

DataTable dt = new .DataTable(); 
dt.Columns.Add("Name", typeof(string)); 
dt.Columns.Add("Property", typeof(string)); 

foreach (Object form in Obj) 
{ 
    DataRow row = dt.NewRow(); <<<------------ 
    string str1 = "hi"; 
    string str2 = "hey"; 
    row["Name"] = str1; 
    row["Property"] = str2; 
    dt.Rows.Add(row); 
} 

通過生成循環中一個新行,它被視爲一個新行同一個。

編輯:如果這不起作用,那麼Obj集合可能不包含值。試試這個測試:

DataTable dt = new DataTable(); 
dt.Columns.Add("Name", typeof(string)); 
dt.Columns.Add("Property", typeof(string)); 

for (int i=0; i<5; i++) 
{ 
    DataRow row = dt.NewRow(); 
    string str1 = "hi"; 
    string str2 = "hey"; 
    row["Name"] = str1; 
    row["Property"] = str2; 
    dt.Rows.Add(row); 
} 

這樣,結果數據表包含5行。

+0

仍然我的數據表不會追加行。 – vicky

+0

什麼是Obj?那裏有多少物品?如果你調試,你看到foreach循環多次執行?剛剛測試過它,它的工作原理,所以我猜你沒有在Obj集合中的項目。 –

+0

Obj是一個泛型列表,它有項目。 foreach循環也執行多次。僅供參考,foreach有if條件,是否有所作爲? – vicky

0

您只有一個rowDataRow)對象,您不斷重新編輯。在循環範圍內聲明一個新對象:

foreach (Object form in Obj) 
{ 
    DataRow row = dt.NewRow(); 
    //... 
    dt.Rows.Add(row); 
}