DataRow.BeginEdit-Methode
Startet einen Bearbeitungsvorgang für ein DataRow-Objekt.
Namespace: System.Data
Assembly: System.Data (in system.data.dll)
Syntax
'Declaration
Public Sub BeginEdit
'Usage
Dim instance As DataRow
instance.BeginEdit
public void BeginEdit ()
public:
void BeginEdit ()
public void BeginEdit ()
public function BeginEdit ()
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Die Methode wurde innerhalb des RowChanging-Ereignisses aufgerufen. |
|
Die Methode wurde für eine gelöschte Zeile aufgerufen. |
Hinweise
Versetzen Sie eine DataRow mit der BeginEdit-Methode in den Bearbeitungsmodus. In diesem Modus werden Ereignisse vorübergehend unterbrochen, sodass der Benutzer mehrere Änderungen an einer Reihe von Zeilen vornehmen kann, ohne dass dabei Validierungsregeln ausgelöst werden. Wenn Sie z. B. sicherstellen müssen, dass der Wert der Spalte für einen Gesamtbetrag den Werten der Spalten Soll und Haben in einer Zeile entspricht, können Sie jede Zeile in den Bearbeitungsmodus versetzen und so die Validierung der Zeilenwerte unterbrechen, bis der Benutzer einen Commit für die Werte ausführt.
Die BeginEdit-Methode wird implizit aufgerufen, wenn der Benutzer den Wert eines datengebundenen Steuerelements ändert. Die EndEdit-Methode wird implizit aufgerufen, wenn die AcceptChanges-Methode für das DataTable-Objekt aufgerufen wird. Im Bearbeitungsmodus speichert die DataRow Darstellungen der ursprünglichen und neu vorgeschlagenen Werte. Solange die EndEdit-Methode nicht aufgerufen wurde, können Sie daher die ursprüngliche oder die vorgeschlagene Version abrufen, indem Sie DataRowVersion.Original oder DataRowVersion.Proposed für den version-Parameter der Item-Eigenschaft übergeben. Sie können an dieser Stelle auch alle Bearbeitungsvorgänge abbrechen, indem Sie die CancelEdit-Methode aufrufen.
Um anzuzeigen, ob die Zeile einen ursprünglichen oder einen vorgeschlagenen Wert enthält, rufen Sie die HasVersion-Methode auf.
Beispiel
Im Beispiel wird eine einfache DataTable mit einer DataColumn und fünf DataRow-Objekten sowie einer UniqueConstraint erstellt. Außerdem wird ein Handler für das RowChanged-Ereignis hinzugefügt, um zu überwachen, wann der Wert der Zeile geändert wird. Nach dem Aufruf von BeginEdit für die vorhandenen Zeilen werden die Einschränkung und das Ereignis vorübergehend deaktiviert, und die ursprünglichen und die vorgeschlagenen Werte werden ausgegeben. BeginEdit wird erneut aufgerufen, um zwei Zeilen auf denselben Wert festzulegen. Beim Aufruf von EndEdit wird die UniqueConstraint für die identischen Werte erzwungen.
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
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]);
}
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
DataRow-Klasse
DataRow-Member
System.Data-Namespace
AcceptChanges
CancelEdit
EndEdit
HasVersion
Item
RowState