如何在不丢失数据的情况下重命名数据表列名?

时间:2012-01-19 10:48:02

标签: c# asp.net linq datatable

问:

我想重命名我的数据表列名。

我试过了:

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

dt.AcceptChanges();

但是之后我的数据丢失了!!

4 个答案:

答案 0 :(得分:10)

以下是示例:

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

我没有发现任何数据丢失!!!!!!!!因为它只会改变列名。

编辑

您还可以从存储过程中提取所需的列名。

答案 1 :(得分:9)

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

这只会将您的Columns[8]绑定到Db中不存在的“regnum”列。

如果要重命名实际的Db列,请执行SQL脚本。

但我的猜测是你真的想改变标题:

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

答案 2 :(得分:2)

试试这个:

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

答案 3 :(得分:0)

此代码也可以为某人服务! 我意识到这是最简单的方式,就像@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;
                    }
相关问题