views:

249

answers:

2

I have a csv reader class that reads a .csv file and its values.... I have created datatable out of it... Consider my Datatable contains three header columns Name,EmailId,PhoneNo.... The values have been added successfully.... Now i want to add two columns IsDeleted,CreatedDate to this datatable... I have tried this but it doesn't seem to work,

    foreach (string strHeader in headers)
    {
        dt.Columns.Add(strHeader);
    }
    string[] data;
    while ((data = reader.GetCSVLine()) != null)
    {
        dt.Rows.Add(data);
    }
    dt.Columns.Add("IsDeleted", typeof(byte));
    dt.Columns.Add(new DataColumn("CreatedDate", typeof(DateTime)));
    foreach (DataRow dr in dt.Rows)
    {
        dr["IsDeleted"] = Convert.ToByte(0);
        dr["CreatedDate"] = Convert.ToDateTime(System.DateTime.Now.ToString());
        dt.Rows.Add(dr);
    }

dt.Rows.Add(dr); shows an error saying This row already belongs to this table. ....

alt text

+1  A: 

Use dt.Rows.Import, or dt.ImportRows, I forgot the name

or judging from your code, why you need the dt.Rows.Add? shouldn't that be omitted?

Michael Buen
@Micheal where should i import?
Pandiya Chendur
@Pandiya: at first glance I thought you are copying from one datatable to another datatable. anyway, check my edited answer
Michael Buen
+1  A: 

Why do you add the datarow again into the table?

Remove the line dt.Rows.Add(dr);

and edit the datatable directly like this dt.Rows[i]["IsDeleted"] = Convert.ToByte(0); using a for loop

Veer
@veer you were correct.... I got it working by removing it...
Pandiya Chendur