Avatar billede decrypto Nybegynder
17. april 2006 - 21:01 Der er 9 kommentarer

Kopier en anden DataTable's row i en ny DataTable

Jeg har en behov for at, at add'e en datarow fra en eksisterende DataTable.

Jeg prøver følgende:

tmpSchemaFieldTable.Rows.Add(schemaFieldTable.Rows[i]);

...men får en:
System.ArgumentException was unhandled by user code
  Message="This row already belongs to another table."

Hvordan kan jeg kopiere den ind i min tmpSchemaFieldTable??
Avatar billede arne_v Ekspert
17. april 2006 - 21:08 #1
Kan du bruge tmpSchemaFieldTable.ImportRow(schemaFieldTable.Rows[i]) ?
Avatar billede decrypto Nybegynder
17. april 2006 - 21:13 #2
måske prøver....
Avatar billede decrypto Nybegynder
17. april 2006 - 21:15 #3
Den gav ingen runtime error, men jeg fik ikke noget over i tmpSchemaFieldTable.
Avatar billede rasserw Nybegynder
18. april 2006 - 20:41 #4
Hej,
Kunne det tænkes at den først skal runde en variabel?
Noget med:

DataRow dr = new DataRow(); // eller er det TableRow??
dr = schemaFieldTable.Rows[i];
tmpSchemaFieldTable.Rows.Add(dr);

Venligst
Arne Johansen
www.frameworker.net
Avatar billede arne_v Ekspert
19. april 2006 - 05:58 #5
mystisk - følgende virker hos mig:

using System;
using System.Data;

namespace E
{
    public class MainClass
    {
        public static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("F1", typeof(String)));
            dt.Columns.Add(new DataColumn("F2", typeof(String)));
            dt.Rows.Add(new object[] { "1", "A" });
            dt.Rows.Add(new object[] { "2", "BB" });
            dt.Rows.Add(new object[] { "3", "CCC" });
            for(int row = 0; row < dt.Rows.Count; row++)
            {
                for(int col = 0; col < dt.Columns.Count; col++)
                {
                    Console.Write(" " + dt.Rows[row].ItemArray[col]);
                }
                Console.WriteLine();
            }
            //dt.Rows.Add(dt.Rows[2]);
            dt.ImportRow(dt.Rows[2]);
            for(int row = 0; row < dt.Rows.Count; row++)
            {
                for(int col = 0; col < dt.Columns.Count; col++)
                {
                    Console.Write(" " + dt.Rows[row].ItemArray[col]);
                }
                Console.WriteLine();
            }
        }
    }
}
Avatar billede arriva Nybegynder
20. april 2006 - 11:26 #6
Har row'en evt. en .copyto metode?
Avatar billede decrypto Nybegynder
03. maj 2006 - 14:08 #7
Jeg fik det til at virke..., jeg kan ikke huske hvem jeg skylder points...
Avatar billede rasserw Nybegynder
03. maj 2006 - 15:49 #8
Hej,

Fint at det virker! :o)
Jef snuppede point fra arne_v lige før, så giv du dem til ham. :o)

Venligst
Arne Johansen
www.frameworker.net
Avatar billede arne_v Ekspert
03. maj 2006 - 15:55 #9
kun hvis der er brugt ImportRow
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester