重置DataTable中的AutoIncrement

时间:2011-05-12 02:26:21

标签: c# datatable

我使用DataSet填充DataAdapter SQL CE 数据库。数据显示在绑定到DataSet的DataTable的DataGrid上。我的DataSource中有一个自动递增ID字段(或在SQLCE中,称为PRIMARY KEY IDENTITY);相应地,我还在DataTable

中设置了一个AutoIncrement ID列
/* when DataTable is first populated, start counting from Rows.Count */
/* if empty, starts with 1 */
dt.Column["id"].AutoIncrementSeed = dt.Rows.Count + 1;

当我清除DataTable时出现问题。我想将AutoIncrement Counter重置为1但不能,我尝试了以下内容:

/* clearing and disposing DataTable, DataSet, DataAdaptor does not reset the counter */
dt.Clear();
dt.Dispose();
ds.Clear();
ds.Dispose()
da.Dispose()

/* manually re-setting the AutoIncrementSeed also does not reset the counter */
dt.Column["id"].AutoIncrementSeed = 1;

它离开了Clear()之前停止的计数器。如何重置DataTable中的AutoIncrement?

2 个答案:

答案 0 :(得分:7)

像这样使用

dt.Clear();
dt.Column["id"].AutoIncrementStep = -1;
dt.Column["id"].AutoIncrementSeed = -1;

dt.Column["id"].AutoIncrementStep = 1;
dt.Column["id"].AutoIncrementSeed = 1;

查看以下链接了解更多信息

http://www.eggheadcafe.com/community/aspnet/10/25407/autoincrementseed.aspx

答案 1 :(得分:1)

我已将代码简化为此版本:

dt.Column["id"].AutoIncrement = True
dt.Column["id"].AutoIncrementSeed = 0
dt.Column["id"].AutoIncrementStep = -1
dt.Column["id"].AutoIncrementSeed = -1

这对我来说更好,因为种子和步的-1值。 我认为AutoIncrementSeed属性的实现是这样的:

if (_AutoIncrementSeed <> value)
    _InternalAutoIncrementSeed = value 
_AutoIncrementSeed = value

和_InternalAutoIncrementSeed用于NewRow函数。