重置DataTable中的AutoIncrement

我使用DataAdapterDataSet填充到SQL CE数据库。 数据显示在DataGrid上,该DataGrid绑定到DataSet的DataTable。 我的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?

像这样使用

 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

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

 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函数。