问题描述
我需要将自己隐藏的自动增量添加到数据表中,但是在从 .accdb 文件加载数据表之后。隐藏新列没有问题,但是否可以在位置 0 插入一列?我不能在加载数据后将新的自动增量列放在最右边,因为它会妨碍,因为它会导致在运行时添加其他列之前出现间隙。每个列索引>0 的数据列必须与数据一致,没有由于隐藏的自动增量列造成的间隙。
我知道如何使用列名从 DataView 创建表,但不确定这是否是我想要的。一个新的DataTable形成一个DataView会是一个完整的独立DataTable吗?
解决方法
要在数据加载后为任何列设置索引值,请使用 DataColumn.SetOrdinal 方法。
假设加载的数据有列“ID”(主键)、“Col 1”、“Col 2”、“Col 3”。
接下来,添加您自己的自动增量、唯一列作为“myID”,然后使用以下语法:
dataTable.Columns["ID"].SetOrdinal(1);
dataTable.Columns["Col 1"].SetOrdinal(2);
dataTable.Columns["Col 2"].SetOrdinal(3);
dataTable.Columns["Col 3"].SetOrdinal(4);
dataTable.Columns["myID"].SetOrdinal(0);
这会将新添加的列的索引设置为 0,并将其余列向上移动 1。