开发者

Reset AutoIncrement in DataTable

I populate a DataSet with a DataAdapter to a SQL CE Database. Data is displayed on a DataGrid which is binded to DataSet's DataTable. I have an auto-increment ID field (or in SQLCE, called PRIMARY KEY IDENTITY) in my DataSource; correspondingly, I also set a AutoIncrement ID column in my DataTable.

/* when DataTable is first populated, start counting from Rows.Count */
/* if empty, starts with 1 */
dt.Column["id"].AutoIncrementSeed = dt.Rows.Count + 1;

Problem come when I clear my DataTable. I want to reset the AutoIncrement Counter back to 1 but not able to, I tried the following:

/* clearing and disposi开发者_开发百科ng 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;

It just left with the counter it left off before Clear(). How can I reset the AutoIncrement in the DataTable?


Use like this

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

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

Check the below link for more

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


I've simplified code to this version:

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

It's better for me, because of -1 values of seed and step. I think that implementation of AutoIncrementSeed property is like that:

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

and _InternalAutoIncrementSeed is used in NewRow function.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜