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
Das Beispiel erstellt ein einfaches DataTable Objekt mit einem DataColumn und fünf DataRow Objekten und einem UniqueConstraint. Ein RowChanged Ereignishandler wird auch hinzugefügt, um zu überwachen, wann 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. Es BeginEdit wird erneut aufgerufen, um zwei Zeilen auf denselben Wert festzulegen. Wenn EndEdit sie aufgerufen wird, wird dies UniqueConstraint für 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 Bearbeitungsmodus einzufügen. In diesem Modus werden Ereignisse vorübergehend angehalten, sodass der Benutzer Änderungen an mehr als einer Zeile vornehmen kann, ohne Gültigkeitsprüfungsregeln auszulösen. Wenn Sie beispielsweise sicherstellen müssen, dass der Wert der Spalte für einen Gesamtbetrag den Werten für die Lastschrift- und Kreditspalten in einer Zeile entspricht, können Sie jede Zeile in den Bearbeitungsmodus versetzen, um die Überprüfung der Zeilenwerte anzuhalten, bis der Benutzer versucht, die Werte zu übernehmen.
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 speichert die DataRow Darstellung der ursprünglichen und neuen vorgeschlagenen Werte. Solange die EndEdit Methode nicht aufgerufen wurde, können Sie daher entweder die ursprüngliche oder vorgeschlagene Version abrufen, indem Sie entweder eine DataRowVersion.Original oder DataRowVersion.Proposed für den version Parameter der Item[] Eigenschaft übergeben. Sie können an diesem Punkt auch alle Bearbeitungen abbrechen, indem Sie die CancelEdit Methode aufrufen.
Um festzustellen, ob die Zeile einen ursprünglichen oder vorgeschlagenen Wert enthält, rufen Sie die HasVersion Methode auf.
Note
Die BeginEdit Methode hält vorübergehend Ereignisse an RowChanging , der delete Vorgang jedoch nicht.