...geht nicht, da beim Aufruf e.NewObject = null ist. Sollte eigentlich auch nicht sein.
Das ist korrekt. Das Problem hatte ich auch.
Wenn Du mit einem DataSet arbeitest. Erwartet er in e.NewObject keine DataRow, sondern ein DataRowView - warum auch immer.
Ich hab nen dirty-Hack gemacht:
private void bindingSource1_CurrentChanged(object sender, EventArgs e)
{
if (bindingSource1.Current != null)
{
DataRowView dv = (DataRowView)bindingSource1.Current;
if( dv.IsNew ){
byte[] guidBytes = new byte[16];
rand.NextBytes(guidBytes);
dv.Row[0] = new System.Guid(guidBytes);
}
}
}
Wie Du siehst, lass ich mir hier ne Guid erzeugen. Das funktioniert soweit. Wenn allerdings einer der Profis weiß, wie es "richtig" geht, bin auch ich an einer sauberen Lösung dieses Problems interessiert.
@citizen.ron:
Bei Integer kannst Du "AutoIncrement" auf "true" setzen, dann geht das glaub ich automatisch. Mit System.Guid geht das aber nicht.