Как переименовать имя столбца с данными без потери данных? - PullRequest
6 голосов
/ 19 января 2012

Q:

Я хочу переименовать имена столбцов таблицы данных.

Я пробовал это:

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

dt.AcceptChanges();

, но мои данные после этого теряются !!

Ответы [ 4 ]

11 голосов
/ 19 января 2012

Ниже приведен пример:

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();

Я не обнаружил потери данных !!!!!!!!Потому что это просто изменит имя столбца.

РЕДАКТИРОВАТЬ

Вы также можете извлечь нужные имена столбцов из ваших хранимых процедур.

9 голосов
/ 19 января 2012
dt.Columns[8].ColumnName = "regnum";

Это просто связывает ваш Columns[8] с несуществующим столбцом "regnum" в БД.

Если вы хотите переименовать фактический столбец Db, выполните сценарий SQL.

Но я думаю, вы действительно хотите изменить заголовок:

  dt.Columns[8].Caption = "regnum";
2 голосов
/ 11 марта 2016

Попробуйте это:

 dataTable.Columns["ExistingColumnName"].ColumnName = "regnum";
0 голосов
/ 07 июня 2018

Также этот код может служить кому-то! Я понимаю, что это самый простой способ, как сказал @Henk:

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;
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...