C#, WinForms, DataGridView, DataTable. Mit meinem Formular kann der Benutzer Daten in eine neue Zeile eingeben (im Gegensatz zu einer einzelnen Datensatzansicht des Datensatzes). Wenn der Benutzer meine Speichern-Schaltfläche klickt, sieht das Click-Ereignis wie folgt aus:DataTable.GetChanges (DataRowState.Added) schlägt mit Nullwerten fehl
DataTable dtAddRows = this.SomeFictitiouslyNamedDataSet.SomeFictitiouslyNamedDataTable.GetChanges(DataRowState.Added);
Meine Vermutung ist, dass Aufruf GetChanges mit diesem Enum wird mich bekommen eine Reihe von Zeilen, die zur Laufzeit in das Netz aufgenommen wurden . Es tritt jedoch ein Fehler auf, weil eine der Spalten "Last_Updated_DT" (die angezeigt und nur gelesen werden muss) eine Datumsspalte ist, die beim Schreiben in die Datentabelle ausgefüllt wird. Das DataSet verfügt jedoch über eine Regel, dass diese Spalte nicht null sein darf.
Das Problem ist, bekomme ich einen Fehler, der angibt, dass die Last_Updated_DT Spalte tatsächlich Null ist (Überraschung Überraschung). Es ist eine neue Zeile, und die Spalte ist nur im Raster readonly, also ist es natürlich null.
Wie kann ich diesen Fehler umgehen oder einen Wert in diese (oder jene) Zeilen für diese Spalte stopfen, bevor ich tatsächlich versuche, die hinzugefügten Zeilen zu erhalten?
Kompiliert diese Zeile? Oder haben Sie Ihr DataSet ... DataSet benannt? und Ihre DataTable ... DataTable? – LarsTech
Sie können einen Standardwert für diese schreibgeschützte Spalte festlegen. Ihre neuen Zeilen haben diesen Wert anstelle von null. – Kinetic
@KiNeTiC Kann ich einen Standardwert von DateTime.Now festlegen? Dies scheint mit nichts anderem als Text von der GUI zu funktionieren, und nach Im im Click-Ereignis ist es zu spät. –