2009-06-19 16 views
0

Salut je veux ajouter un datarow qui im ​​revenir d'une table de données à une nouvelle datatableAjout d'un datarow d'une table existante à une nouvelle table

c'est le code im en utilisant:

foreach (DataRow dr1 in dt.Rows) 
{ 
    string AptType = dr1["AppointmentType"].ToString(); 
    if (AptType == "FreeTime") 
    { 
    dt2.ImportRow(dr1); 
    } 
} 
RadGrid2.DataSource = dt2; 
reader.Close(); 
conn.Close(); 

le problème est que quand je vais ensuite exécuter la page avec la table sur elle im obtenir une erreur et que Datakey l'une des colonnes ISNT étant reconnu

grâce à l'avance

+0

Ce que le message d'exception – SLaks

Répondre

1

Do les deux tables de données ont le même schéma? Ces erreurs peuvent être renvoyées si elles ne correspondent pas aux colonnes, aux types de données ou aux clés.

+0

ils devraient avoir le même schéma que je nai pas fait avant ne i besoin de mettre les colonnes en premier parce que je pensais que la fonction clone a fait cela. – kevinw

+0

Non si datatable 2 est un clone de datatable 1, ou vice versa. Clone() copie toutes les colonnes et les contraintes. Pourriez-vous poster un schéma simplifié de vos tables? –

+0

#TempEngineerGroupMain \t \t ( \t \t \t AppointmentType VARCHAR (50), \t \t \t BookedDate DateTime, \t \t \t BookedFromTime DateTime, \t \t \t BookedToTime DateTime, \t \t \t TotalDays INT, \t \t \t JobMins INT \t \t) thats la table temporaire que mon processus stocké ramène – kevinw

0

Vous devez utiliser typées TableDataAdapters, je vous rendre la vie beaucoup plus facile ...

Ceci est très facile à faire et à comprendre.

Suivez ce tutoriel Strongly Typed TableDataAdapters and DataTables

Une fois que vous avez saisi le concept, vous devez faire quelque chose comme ceci:

MyTypedTableAdapter tableAdapter = new MyTypedTableAdapter(); 
    MyTypedDataTable dt = tableAdapter.GetData(); 
    foreach (MyTypedDataRow row in dt.Rows) 
    { 
     string AptType = row.AppointmentType; 
     if (AptType == "FreeTime") 
     { 
      dt2.ImportRow(row); 
     } 
    } 
    RadGrid2.DataSource = dt2;