2009-12-16 7 views
1

Je sais que cela semble vraiment bizarre, mais je suis assez nouveau pour C# et j'espère que vous pourrez m'aider.C# Ajout d'un Datatable à un Datatable

Je suis en boucle à travers un DataTable, puis j'exécute un qry et j'obtiens le résultat dans un DataTable.

Fonctionne bien pour un enregistrement, mais dès qu'il y a plus d'enregistrements, seul le dernier enregistrement est dans le DT, ce qui est logique, je ne sais pas comment le réparer. Je dois avoir tous les enregistrements dans le DT.

Voici mon code, toutes les suggestions sont les bienvenues ....

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

Que fait 'getRegistrationExport'? Ajoutez le code pour cela. –

+0

Pourriez-vous élaborer un peu plus sur ce que vous devez faire avec les données? Avez-vous le contrôle sur le code de 'ml.GetRegistration()'? –

+1

Si c'est "résolu" alors votez la bonne réponse et marquez-la comme une réponse. –

Répondre

3

Si ml.getRegistrationExport retourne un datatable, il écrase les données sous forme de boucle vous à travers la première datatable .. Vous devez utiliser dt2.merge pour ajouter toutes les données à datatable. 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

Merci de ne pas rendre justice à la réponse super rapide et utile. Je suis sans voix. Mais c'est tout ce que j'ai en ce moment, un grand MERCI, ça marche super !! Steve – Steve

+0

Pas de problème, heureux d'être de service. – Wade73

2

L'un des problèmes que je vois est chaque ligne que vous Boucler dans vous remplacez DT2. Donc, si vous avez 5 lignes, vous devrez remplacer dt2 5 fois et qui sera toujours la dernière règle serait dt2.

Je pense que cela.

Est-ce que vous essayez d'ajouter une ligne à dt2 pour chaque ligne dans le dt d'origine?

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

Je doute que ce soit la ligne, car vous ne seriez pas en mesure de l'assigner à dt2. – Wade73