DataRow.BeginEdit Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Uruchamia operację edycji obiektu DataRow .
public:
void BeginEdit();
public void BeginEdit ();
member this.BeginEdit : unit -> unit
Public Sub BeginEdit ()
Wyjątki
Metoda została wywołana wewnątrz RowChanging zdarzenia.
Metoda została wywołana przy usuniętym wierszu.
Przykłady
W przykładzie tworzony jest prosty DataTable obiekt z jednym DataColumn i pięcioma DataRow obiektami oraz obiektem UniqueConstraint. Program RowChanged obsługi zdarzeń jest również dodawany do monitorowania, gdy wartość wiersza się zmienia. Po wywołaniu BeginEdit istniejących wierszy ograniczenie i zdarzenie są tymczasowo wyłączone, a oryginalne i proponowane wartości zostaną wydrukowane. Element BeginEdit jest ponownie wywoływany, aby ustawić dwa wiersze na tę samą wartość. Gdy EndEdit element jest wywoływany, UniqueConstraint element jest wymuszany na identycznych wartościach.
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
Uwagi
BeginEdit Użyj metody , aby wprowadzić DataRow tryb edycji. W tym trybie zdarzenia są tymczasowo zawieszone, co pozwala użytkownikowi wprowadzać zmiany w więcej niż jednym wierszu bez wyzwalania reguł walidacji. Jeśli na przykład musisz się upewnić, że wartość kolumny dla łącznej kwoty jest równa wartościom kolumn debetowych i kredytowych w wierszu, możesz umieścić każdy wiersz w trybie edycji, aby zawiesić walidację wartości wierszy, dopóki użytkownik nie spróbuje zatwierdzić wartości.
Metoda BeginEdit jest wywoływana niejawnie, gdy użytkownik zmienia wartość kontrolki powiązanej z danymi. EndEdit Metoda jest wywoływana niejawnie podczas wywoływania AcceptChanges metody dla DataTable obiektu. W tym trybie DataRow edycji są przechowywane reprezentacje oryginalnych i nowych proponowanych wartości. W związku z tym, o ile EndEdit metoda nie została wywołana, można pobrać oryginalną lub proponowaną wersję, przekazując parametr DataRowVersion.Original
lub DataRowVersion.Proposed
dla version
parametru Item[] właściwości. Możesz również anulować wszelkie zmiany w tym momencie, wywołując metodę CancelEdit .
Aby sprawdzić, czy wiersz zawiera oryginalną lub proponowaną wartość, wywołaj metodę HasVersion .
Uwaga
Metoda BeginEdit tymczasowo zawiesza RowChanging zdarzenia, ale operacja nie jest wykonywana delete
.
Dotyczy
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Już wkrótce: w ciągu 2024 r. będziemy stopniowo usuwać problemy z usługą GitHub jako mechanizm opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla