DataRow.BeginEdit Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Startar en redigeringsåtgärd på ett DataRow objekt.
public:
void BeginEdit();
public void BeginEdit();
member this.BeginEdit : unit -> unit
Public Sub BeginEdit ()
Undantag
Metoden anropades i RowChanging händelsen.
Metoden anropades på en borttagen rad.
Exempel
Exemplet skapar ett enkelt DataTable med ett DataColumn och fem DataRow objekt och ett UniqueConstraint. En RowChanged händelsehanterare läggs också till för att övervaka när radens värde ändras. När du har anropat BeginEdit på de befintliga raderna inaktiveras villkoret och händelsen tillfälligt och de ursprungliga och föreslagna värdena skrivs ut. BeginEdit Anropas igen för att ange två rader till samma värde. När EndEdit anropas UniqueConstraint tillämpas den på identiska värden.
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
Kommentarer
BeginEdit Använd metoden för att placera en DataRow i redigeringsläge. I det här läget pausas händelser tillfälligt, så att användaren kan göra ändringar i mer än en rad utan att utlösa verifieringsregler. Om du till exempel måste se till att värdet för kolumnen för ett totalt belopp är lika med värdena för debet- och kreditkolumnerna i en rad, kan du placera varje rad i redigeringsläge för att pausa valideringen av radvärdena tills användaren försöker checka in värdena.
Metoden BeginEdit anropas implicit när användaren ändrar värdet för en databunden kontroll. EndEdit Metoden anropas implicit när du anropar AcceptChanges -metoden för DataTable objektet. I det här redigeringsläget DataRow lagrar representationerna av de ursprungliga och nya föreslagna värdena. Så länge EndEdit metoden inte har anropats kan du därför hämta antingen den ursprungliga eller föreslagna versionen genom att skicka antingen DataRowVersion.Original eller DataRowVersion.Proposed för parametern versionItem[] för egenskapen. Du kan också avbryta alla ändringar i det här läget genom att CancelEdit anropa metoden.
Om du vill se om raden innehåller ett ursprungligt eller föreslaget värde anropar HasVersion du metoden.
Note
Metoden BeginEdit pausar RowChanging tillfälligt händelser, men åtgärden delete gör det inte.