add row to a BindingSource gives different autoincrement value from whats saved into DB

Posted by Ruben Trancoso on Stack Overflow See other posts from Stack Overflow or by Ruben Trancoso
Published on 2009-11-16T01:54:55Z Indexed on 2010/05/16 0:50 UTC
Read the original article Hit count: 317

I have a DataGridView that shows list of records and when I hit a insert button, a form should add a new record, edit its values and save it.

I have a BindingSource bound to a DataGridView. I pass is as a parameter to a NEW RECORD form so

// When the form opens it add a new row and de DataGridView display this new record at this time
DataRowView currentRow;
currentRow = (DataRowView) myBindindSource.AddNew();

when user confirm to save it I do a

myBindindSource.EndEdit(); // inside the form

and after the form is disposed the new row is saved and the bindingsorce position is updated to the new row

DataRowView drv = myForm.CurrentRow;
avaliadoTableAdapter.Update(drv.Row);
avaliadoBindingSource.Position = avaliadoBindingSource.Find("ID", drv.Row.ItemArray[0]);

The problem is that this table has a AUTOINCREMENT field and the value saved may not correspond the the value the bindingSource gives in EDIT TIME.

So, when I close and open the DataGridView again the new rowd give its ID based on the available slot in the undelying DB at the momment is was saved and it just ignores the value the BindingSource generated ad EDIT TIME,

Since the value given by the binding source should be used by another table as a foreingKey it make the reference insconsistent.

There's a way to get the real ID was saved to the database?

© Stack Overflow or respective owner

Related posts about c#

Related posts about sql-server-ce