2009-12-16 148 views
1

我知道这听起来很奇怪,但我对C#相当陌生,我希望你们能帮助我。C#将数据表添加到数据表

我正在通过DataTable循环,然后执行qry并将结果获取到DataTable中。

对于一条记录工作正常,但只要有更多记录,只有最后一条记录在DT中,这是有道理的,我只是不知道如何解决它。我需要在DT中拥有所有记录。

这里是我的代码,任何建议,欢迎....

DataTable dt = ml.getRegistration(); 
    DataTable dt2 = new DataTable(); 

    foreach (DataRow row in dt.Rows) 
    {  
     dt2 = ml.getRegistrationExport(row["ID"]); 

    } 
    GridView1.DataSource = dt2; 
    GridView1.DataBind(); 
+2

getRegistrationExport是做什么的?为它添加代码。 – 2009-12-16 21:50:21

+0

您能否详细说明您需要如何处理数据?你有控制'ml.GetRegistration()'的代码吗? – 2009-12-16 21:52:28

+1

如果它“已解决”,然后投票正确的答案并将其标记为答案。 – 2009-12-16 22:14:32

回答

3

如果ml.getRegistrationExport返回一个数据表,然后通过覆盖数据则按照循环的第一数据表。您需要使用dt2.merge将所有数据添加到数据表。 HTH。

DataTable dt = ml.getRegistration(); 
DataTable dt2 = new DataTable(); 

foreach (DataRow row in dt.Rows) 
{ 

dt2.merge(ml.getRegistrationExport(row["ID"])); 

} 

GridView1.DataSource = dt2; 
GridView1.DataBind(); 
+0

谢谢你不会公平地回答这个超快速且有帮助的回复。我无语。 但这就是我现在所拥有的一切,非常感谢,它效果很棒! Steve – Steve 2009-12-16 22:16:12

+0

没问题,很高兴为您服务。 – Wade73 2009-12-17 13:27:52

2

一个我看到的问题是,你是通过循环你更换DT2的每一行。所以,如果你有5行,你会替换dt2 5次,以及哪个行最后会规则dt2。

我会重新考虑这一点。

你正在做的是在原dt中的每一行添加一行到dt2?

DataTable dt = ml.getRegistration(); 
DataTable dt2 = new DataTable(); 

foreach (DataRow row in dt.Rows) 
{ 
    DataRow newRow = dt2.NewRow(); 

    // What Does getRegistrationExport return? 
    // A row or series of rows or a new DT? 
    // Each would change solution 
    newRow["SomeColumn"] = ml.getRegistrationExport(row["ID"]); 

    dt2.Rows.Add(newRow); 
} 

GridView1.DataSource = dt2; 
GridView1.DataBind(); 
+0

我怀疑这是行,因为你不能将它分配给dt2。 – Wade73 2009-12-16 22:09:40