DataRow - Verständnis-Frage

28/05/2008 - 13:53 von M.Erlinger | Report spam
Hallo

Wenn ich in einer Form mit gebundenen Controls Eingaben tàtige (oder auch
nicht), dann kann ich ja nach dem Auruf von "MyBindingSource.EndEdit()" den
DataRow.RowState abfragen auf z.B. Modified.

Wie ist es mir möglich vor dem Aufruf EndEdit() oder CancelEdit() auf der
DataRow abzufragen, ob Daten von Benutzer eingegeben / modifiziert wurden.

In meinem Fall wàre dies so, dass ich einen "Abbruch"-Button auf der Form
habe, der ursprünglich ein "MyBindingSource.CancelEdit()" durchführt, und
den Original-Datensatz dadurch wiederherstellt. Jetzt soll aber vorher noch
eine Sicherheits-Abfrage eingebaut werden - die nur dann erscheinen soll,
wenn Daten vom Benutzer in einer der vielen Datenfelder geàndert wurden.

Kann mir bitte jemand weiterhelfen ?
Danke schon mal
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
28/05/2008 - 16:05 | Warnen spam
Hallo Michael,

Wenn ich in einer Form mit gebundenen Controls Eingaben tàtige (oder auch
nicht), dann kann ich ja nach dem Auruf von "MyBindingSource.EndEdit()" den
DataRow.RowState abfragen auf z.B. Modified.
Wie ist es mir möglich vor dem Aufruf EndEdit() oder CancelEdit() auf der
DataRow abzufragen, ob Daten von Benutzer eingegeben / modifiziert wurden.
In meinem Fall wàre dies so, dass ich einen "Abbruch"-Button auf der Form
habe, der ursprünglich ein "MyBindingSource.CancelEdit()" durchführt, und
den Original-Datensatz dadurch wiederherstellt. Jetzt soll aber vorher noch
eine Sicherheits-Abfrage eingebaut werden - die nur dann erscheinen soll,
wenn Daten vom Benutzer in einer der vielen Datenfelder geàndert wurden.



Ein Beispiel bei einer DataGridView Bindung:

private void masterDataGridView_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
DataGridView dgv = sender as DataGridView;
object value = dgv[e.ColumnIndex, e.RowIndex].FormattedValue;
CurrencyManager cm = this.BindingContext[dgv.DataSource,
dgv.DataMember] as CurrencyManager;
if (!PrüfungOK(value, e.ColumnIndex))
cm.CancelCurrentEdit();
}

const int colIndexWert = 2;

private bool PrüfungOK(object wert, int col)
{
switch (col)
{
case colIndexWert:
return ((string)wert).StartsWith("I"); //Beispiel
}
return true;
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen