DataRow.BeginEdit Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Startet einen Bearbeitungsvorgang für ein DataRow-Objekt.
public:
void BeginEdit();
public void BeginEdit ();
member this.BeginEdit : unit -> unit
Public Sub BeginEdit ()
Ausnahmen
Die Methode wurde innerhalb des RowChanging-Ereignisses aufgerufen.
Die Methode wurde für eine gelöschte Zeile aufgerufen.
Beispiele
Im Beispiel wird ein einfaches DataTable mit ein DataColumn und fünf DataRow -Objekten und ein UniqueConstrainterstellt. Ein RowChanged Ereignishandler wird auch hinzugefügt, um zu überwachen, wenn sich der Wert der Zeile ändert. Nach dem Aufrufen BeginEdit der vorhandenen Zeilen werden die Einschränkung und das Ereignis vorübergehend deaktiviert, und die ursprünglichen und vorgeschlagenen Werte werden gedruckt. Der BeginEdit wird erneut aufgerufen, um zwei Zeilen auf denselben Wert festzulegen. Wenn EndEdit aufgerufen wird, wird für UniqueConstraint die identischen Werte erzwungen.
private void DemonstrateRowBeginEdit()
{
DataTable table = new DataTable("table1");
DataColumn column = new
DataColumn("col1",Type.GetType("System.Int32"));
table.RowChanged+=new
DataRowChangeEventHandler(Row_Changed);
table.Columns.Add(column);
// Add a UniqueConstraint to the table.
table.Constraints.Add(new UniqueConstraint(column));
// Add five rows.
DataRow newRow;
for(int i = 0;i<5; i++)
{
// RowChanged event will occur for every addition.
newRow= table.NewRow();
newRow[0]= i;
table.Rows.Add(newRow);
}
// AcceptChanges.
table.AcceptChanges();
// Invoke BeginEdit on each.
Console.WriteLine(
"\n Begin Edit and print original and proposed values \n");
foreach(DataRow row in table.Rows)
{
row.BeginEdit();
row[0]=(int) row[0]+10;
Console.Write("\table Original \table" +
row[0, DataRowVersion.Original]);
Console.Write("\table Proposed \table" +
row[0,DataRowVersion.Proposed] + "\n");
}
Console.WriteLine("\n");
// Accept changes
table.AcceptChanges();
// Change two rows to identical values after invoking BeginEdit.
table.Rows[0].BeginEdit();
table.Rows[1].BeginEdit();
table.Rows[0][0]= 100;
table.Rows[1][0]=100;
try
{
/* Now invoke EndEdit. This will cause the UniqueConstraint
to be enforced.*/
table.Rows[0].EndEdit();
table.Rows[1].EndEdit();
}
catch(Exception e)
{
// Process exception and return.
Console.WriteLine("Exception of type {0} occurred.",
e.GetType());
}
}
private void Row_Changed(object sender,
System.Data.DataRowChangeEventArgs e)
{
DataTable table = (DataTable) sender;
Console.WriteLine("RowChanged " + e.Action.ToString()
+ "\table" + e.Row.ItemArray[0]);
}
Private Sub DemonstrateRowBeginEdit()
Dim table As New DataTable("table1")
Dim column As New DataColumn("col1", Type.GetType("System.Int32"))
AddHandler table.RowChanged, AddressOf Row_Changed
table.Columns.Add(column)
' Add a UniqueConstraint to the table.
table.Constraints.Add(New UniqueConstraint(column))
' Add five rows.
Dim newRow As DataRow
Dim i As Integer
For i = 0 To 4
' RowChanged event will occur for every addition.
newRow = table.NewRow()
newRow(0) = i
table.Rows.Add(newRow)
Next i
' AcceptChanges.
table.AcceptChanges()
' Invoke BeginEdit on each.
Console.WriteLine(ControlChars.Cr _
& " Begin Edit and print original and proposed values " _
& ControlChars.Cr)
Dim row As DataRow
For Each row In table.Rows
row.BeginEdit()
row(0) = CInt(row(0)) & 10
Console.Write(ControlChars.Tab & " Original " & ControlChars.Tab _
& row(0, DataRowVersion.Original).ToString())
Console.Write(ControlChars.Tab & " Proposed " & ControlChars.Tab _
& row(0, DataRowVersion.Proposed).ToString() & ControlChars.Cr)
Next row
Console.WriteLine(ControlChars.Cr)
' Accept changes
table.AcceptChanges()
' Change two rows to identical values after invoking BeginEdit.
table.Rows(0).BeginEdit()
table.Rows(1).BeginEdit()
table.Rows(0)(0) = 100
table.Rows(1)(0) = 100
Try
' Now invoke EndEdit. This will cause the UniqueConstraint
' to be enforced.
table.Rows(0).EndEdit()
table.Rows(1).EndEdit()
Catch e As Exception
' Process exception and return.
Console.WriteLine("Exception of type {0} occurred.", _
e.GetType().ToString())
End Try
End Sub
Private Sub Row_Changed _
(sender As Object, e As System.Data.DataRowChangeEventArgs)
Dim table As DataTable = CType(sender, DataTable)
Console.WriteLine("RowChanged " & e.Action.ToString() _
& ControlChars.Tab & e.Row.ItemArray(0).ToString())
End Sub
Hinweise
Verwenden Sie die BeginEdit -Methode, um einen DataRow in den Bearbeitungsmodus zu versetzen. In diesem Modus werden Ereignisse vorübergehend angehalten, sodass der Benutzer Änderungen an mehr als einer Zeile vornehmen kann, ohne Validierungsregeln auszulösen. Wenn Sie beispielsweise sicherstellen müssen, dass der Wert der Spalte für einen Gesamtbetrag den Werten für die Debit- und Guthabenspalten in einer Zeile entspricht, können Sie jede Zeile in den Bearbeitungsmodus versetzen, um die Überprüfung der Zeilenwerte auszusetzen, bis der Benutzer versucht, die Werte zu commiten.
Die BeginEdit -Methode wird implizit aufgerufen, wenn der Benutzer den Wert eines datengebundenen Steuerelements ändert. Die EndEdit Methode wird implizit aufgerufen, wenn Sie die AcceptChanges -Methode für das DataTable -Objekt aufrufen. In diesem Bearbeitungsmodus werden darstellungen DataRow der ursprünglichen und neuen vorgeschlagenen Werte gespeichert. Solange die EndEdit Methode nicht aufgerufen wurde, können Sie daher entweder die ursprüngliche oder die vorgeschlagene Version abrufen, indem Sie entweder DataRowVersion.Original
oder DataRowVersion.Proposed
für den version
Parameter der Item[] -Eigenschaft übergeben. Sie können alle Bearbeitungen an diesem Punkt auch abbrechen, indem Sie die CancelEdit -Methode aufrufen.
Rufen Sie die HasVersion -Methode auf, um festzustellen, ob die Zeile einen ursprünglichen oder vorgeschlagenen Wert enthält.
Hinweis
Die BeginEdit -Methode hält Ereignisse vorübergehend an RowChanging , der delete
Vorgang jedoch nicht.