Anyname Donotcare
Anyname Donotcare

Reputation: 11393

How to rename the datatable column name without losing the data?

I want to rename my DataTable column names.

I tried this:

dt.Columns[8].ColumnName = "regnum";

dt.AcceptChanges();

but my data is lost afterwards.

Upvotes: 8

Views: 89336

Answers (4)

PatsonLeaner
PatsonLeaner

Reputation: 1250

Also may this code serve someone! I have a realize that this is the easiest way just like @Henk said:

using (SqlDataAdapter da = new SqlDataAdapter())
                    {
                        DataTable dt = new DataTable();
                        cmd.CommandType = CommandType.Text;
                        cmd.Connection = con;
                        da.SelectCommand = cmd;
                        da.Fill(dt);
                        dt.Columns[0].ColumnName = "Item NO";
                        dt.Columns[1].ColumnName = "LocalCode";                       
                        dt.Columns[2].ColumnName = "Currency";
                        dt.Columns[3].ColumnName = "Menu Flag";
                        dt.Columns[4].ColumnName = "Item Class";
                        dt.Columns[4].ColumnName = "Dress Sort";
                        return dt;
                    }

Upvotes: 0

Pankaj
Pankaj

Reputation: 10095

Following is the example:

DataTable Dt = new DataTable();
DataColumn Dc = new DataColumn("Name");
DataColumn Dc1 = new DataColumn("ID");
Dt.Columns.Add(Dc);
Dt.Columns.Add(Dc1);

DataRow dr = Dt.NewRow();
dr["name"] = "1";
dr["ID"] = "111";
Dt.Rows.Add(dr);

dr = Dt.NewRow();
dr["name"] = "2";
dr["ID"] = "11112";
Dt.Rows.Add(dr);

Dt.Columns[0].ColumnName = "ddsxsd";
Dt.AcceptChanges();

I did not find any data loss!!!!!!!! Because it will merely change the column name.

EDIT

You can also bring your desired column names from your Stored Procedures.

Upvotes: 12

user4860969
user4860969

Reputation:

Try this:

 dataTable.Columns["ExistingColumnName"].ColumnName = "regnum";

Upvotes: 5

Henk Holterman
Henk Holterman

Reputation: 273179

dt.Columns[8].ColumnName = "regnum";

This just binds your Columns[8] to the non-existing "regnum" column in the Db.

If you want to rename the actuals Db column, execute an SQL script.

But my guess is you actually want to change the Caption:

  dt.Columns[8].Caption = "regnum";

Upvotes: 14

Related Questions