DataSet.GetChanges Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri annak a másolatát, amely tartalmazza az DataSet összes módosítást, amely az utolsó betöltés óta történt, vagy azóta AcceptChanges() lett meghívva.
Túlterhelések
| Name | Description |
|---|---|
| GetChanges() |
Lekéri annak a másolatnak a másolatát, amely tartalmazza az DataSet összes módosítást, amely a betöltés óta vagy a legutóbbi hívás óta AcceptChanges() történt. |
| GetChanges(DataRowState) |
Lekéri annak a másolatát, amely tartalmazza a DataSet legutóbbi betöltés óta végrehajtott összes módosítást, vagy mivel AcceptChanges() a rendszer meghívta, szűrte.DataRowState |
GetChanges()
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
Lekéri annak a másolatnak a másolatát, amely tartalmazza az DataSet összes módosítást, amely a betöltés óta vagy a legutóbbi hívás óta AcceptChanges() történt.
public:
System::Data::DataSet ^ GetChanges();
public System.Data.DataSet? GetChanges();
public System.Data.DataSet GetChanges();
member this.GetChanges : unit -> System.Data.DataSet
Public Function GetChanges () As DataSet
Válaszok
Az ebből DataSet származó módosítások másolata, amely műveleteket hajthat végre rajta, majd később újra egyesíthető a használatával Merge(DataSet). Ha nem található módosított sor, a metódus ad vissza null.
Példák
Az alábbi példa egy egyszerű DataSet táblát, két oszlopot és tíz sort hoz létre. A rendszer két értéket módosít, és egy sort ad hozzá. A rendszer a metódussal hozza létre a módosított adatok egy részhalmazát GetChanges . A hibák egyeztetése után a rendszer új oszlopot ad hozzá az alhalmazhoz, módosítva a sémát. Amikor a Merge metódust a rendszer meghívja a missingSchemaAction beállított MissingSchemaAction.Addértékre, a rendszer hozzáadja az új oszlopot az eredeti DataSet objektum sémához.
private void DemonstrateMerge()
{
// Create a DataSet with one table, two columns,
// and three rows.
DataSet dataSet = new DataSet("dataSet");
DataTable table = new DataTable("Items");
DataColumn idColumn = new DataColumn("id",
Type.GetType("System.Int32"),"");
idColumn.AutoIncrement=true;
DataColumn itemColumn = new DataColumn("Item",
Type.GetType("System.Int32"),"");
// DataColumn array to set primary key.
DataColumn[] keyColumn= new DataColumn[1];
DataRow row;
// Create variable for temporary DataSet.
DataSet changesDataSet;
// Add RowChanged event handler for the table.
table.RowChanged+=new DataRowChangeEventHandler(
Row_Changed);
dataSet.Tables.Add(table);
table.Columns.Add(idColumn);
table.Columns.Add(itemColumn);
// Set primary key column.
keyColumn[0]= idColumn;
table.PrimaryKey=keyColumn;
// Add ten rows.
for(int i = 0; i <10;i++)
{
row=table.NewRow();
row["Item"]= i;
table.Rows.Add(row);
}
// Accept changes.
dataSet.AcceptChanges();
PrintValues(dataSet, "Original values");
// Change row values.
table.Rows[0]["Item"]= 50;
table.Rows[1]["Item"]= 111;
// Add one row.
row=table.NewRow();
row["Item"]=74;
table.Rows.Add(row);
// Insert code for error checking. Set one row in error.
table.Rows[1].RowError= "over 100";
PrintValues(dataSet, "Modified and New Values");
// If the table has changes or errors,
// create a subset DataSet.
if(dataSet.HasChanges(DataRowState.Modified |
DataRowState.Added)&& dataSet.HasErrors)
{
// Use GetChanges to extract subset.
changesDataSet = dataSet.GetChanges(
DataRowState.Modified|DataRowState.Added);
PrintValues(changesDataSet, "Subset values");
// Insert code to reconcile errors. In this case, reject changes.
foreach(DataTable changesTable in changesDataSet.Tables)
{
if (changesTable.HasErrors)
{
foreach(DataRow changesRow in changesTable.Rows)
{
//Console.WriteLine(changesRow["Item"]);
if((int)changesRow["Item",DataRowVersion.Current ]> 100)
{
changesRow.RejectChanges();
changesRow.ClearErrors();
}
}
}
}
// Add a column to the changesDataSet.
changesDataSet.Tables["Items"].Columns.Add(
new DataColumn("newColumn"));
PrintValues(changesDataSet, "Reconciled subset values");
// Merge changes back to first DataSet.
dataSet.Merge(changesDataSet, false,
System.Data.MissingSchemaAction.Add);
}
PrintValues(dataSet, "Merged Values");
}
private void Row_Changed(object sender, DataRowChangeEventArgs e)
{
Console.WriteLine("Row Changed " + e.Action.ToString()
+ "\table" + e.Row.ItemArray[0]);
}
private void PrintValues(DataSet dataSet, string label)
{
Console.WriteLine(label + "\n");
foreach(DataTable table in dataSet.Tables)
{
Console.WriteLine("TableName: " + table.TableName);
foreach(DataRow row in table.Rows)
{
foreach(DataColumn column in table.Columns)
{
Console.Write("\table " + row[column] );
}
Console.WriteLine();
}
}
}
Private Sub DemonstrateMerge()
' Create a DataSet with one table, two columns,
' and three rows.
Dim dataSet As New DataSet("dataSet")
Dim table As New DataTable("Items")
Dim idColumn As New DataColumn("id", _
Type.GetType("System.Int32"), "")
idColumn.AutoIncrement = True
Dim itemColumn As New DataColumn("Item", _
Type.GetType("System.Int32"), "")
' Create DataColumn array to set primary key.
Dim keyColumn(0) As DataColumn
Dim row As DataRow
' Create variable for temporary DataSet.
Dim changesDataSet As DataSet
' Add RowChanged event handler for the table.
AddHandler table.RowChanged, AddressOf Row_Changed
dataSet.Tables.Add(table)
table.Columns.Add(idColumn)
table.Columns.Add(itemColumn)
' Set primary key column.
keyColumn(0) = idColumn
table.PrimaryKey = keyColumn
' Add ten rows.
Dim i As Integer
For i = 0 To 9
row = table.NewRow()
row("Item") = i
table.Rows.Add(row)
Next i
' Accept changes.
dataSet.AcceptChanges()
PrintValues(dataSet, "Original values")
' Change row values.
table.Rows(0)("Item") = 50
table.Rows(1)("Item") = 111
' Add one row.
row = table.NewRow()
row("Item") = 74
table.Rows.Add(row)
' Insert code for error checking. Set one row in error.
table.Rows(1).RowError = "over 100"
PrintValues(dataSet, "Modified and New Values")
' If the table has changes or errors, create a subset DataSet.
If dataSet.HasChanges(DataRowState.Modified Or DataRowState.Added) _
And dataSet.HasErrors Then
' Use GetChanges to extract subset.
changesDataSet = dataSet.GetChanges( _
DataRowState.Modified Or DataRowState.Added)
PrintValues(changesDataSet, "Subset values")
' Insert code to reconcile errors. In this case, reject changes.
Dim changesTable As DataTable
For Each changesTable In changesDataSet.Tables
If changesTable.HasErrors Then
Dim changesRow As DataRow
For Each changesRow In changesTable.Rows
'Console.WriteLine(changesRow["Item"]);
If CInt(changesRow("Item", _
DataRowVersion.Current)) > 100 Then
changesRow.RejectChanges()
changesRow.ClearErrors()
End If
Next changesRow
End If
Next changesTable
' Add a column to the changesDataSet.
changesDataSet.Tables("Items").Columns.Add( _
New DataColumn("newColumn"))
PrintValues(changesDataSet, "Reconciled subset values")
' Merge changes back to first DataSet.
dataSet.Merge(changesDataSet, False, _
System.Data.MissingSchemaAction.Add)
End If
PrintValues(dataSet, "Merged Values")
End Sub
Private Sub Row_Changed(sender As Object, e As DataRowChangeEventArgs)
Console.WriteLine("Row Changed " + e.Action.ToString() _
+ ControlChars.Tab + e.Row.ItemArray(0).ToString())
End Sub
Private Sub PrintValues(dataSet As DataSet, label As String)
Console.WriteLine(label + ControlChars.Cr)
Dim table As DataTable
For Each table In dataSet.Tables
Console.WriteLine("TableName: " + table.TableName)
Dim row As DataRow
For Each row In table.Rows
Dim column As DataColumn
For Each column In table.Columns
Console.Write(ControlChars.Tab & " " _
& row(column).ToString())
Next column
Console.WriteLine()
Next row
Next table
End Sub
Megjegyzések
Létrehoz egy újat DataSet , amely az eredeti DataSet , függőben lévő módosításokat tartalmazó összes sor másolatát tartalmazza. A kapcsolati korlátozások további változatlan sorokat is hozzáadhatnak az újhoz DataSet , ha a változatlan sorok a módosított sorokban az idegen kulcsoknak megfelelő elsődleges kulcsokat tartalmaznak. A metódus akkor ad null vissza, ha az eredetiben DataSet nincsenek függőben lévő módosítások.
Lásd még
A következőre érvényes:
GetChanges(DataRowState)
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
- Forrás:
- DataSet.cs
Lekéri annak a másolatát, amely tartalmazza a DataSet legutóbbi betöltés óta végrehajtott összes módosítást, vagy mivel AcceptChanges() a rendszer meghívta, szűrte.DataRowState
public:
System::Data::DataSet ^ GetChanges(System::Data::DataRowState rowStates);
public System.Data.DataSet? GetChanges(System.Data.DataRowState rowStates);
public System.Data.DataSet GetChanges(System.Data.DataRowState rowStates);
member this.GetChanges : System.Data.DataRowState -> System.Data.DataSet
Public Function GetChanges (rowStates As DataRowState) As DataSet
Paraméterek
- rowStates
- DataRowState
Az egyik DataRowState érték.
Válaszok
Azoknak a szűrt másolatnak a DataSet másolata, amelyeken műveleteket hajthatnak végre, majd később újra egyesíthetők a használatával Merge(DataSet). Ha a kívánt DataRowState sor nem található, a metódus ad vissza null.
Példák
Az alábbi példa egy második GetChanges objektum létrehozására használja a DataSet metódust, amelyet aztán egy adatforrás frissítésére használ.
private void UpdateDataSet(DataSet dataSet)
{
// Check for changes with the HasChanges method first.
if(!dataSet.HasChanges(DataRowState.Modified)) return;
// Create temporary DataSet variable and
// GetChanges for modified rows only.
DataSet tempDataSet =
dataSet.GetChanges(DataRowState.Modified);
// Check the DataSet for errors.
if(tempDataSet.HasErrors)
{
// Insert code to resolve errors.
}
// After fixing errors, update the data source with
// the DataAdapter used to create the DataSet.
adapter.Update(tempDataSet);
}
Private Sub UpdateDataSet(ByVal dataSet As DataSet)
' Check for changes with the HasChanges method first.
If Not dataSet.HasChanges(DataRowState.Modified) Then
Exit Sub
End If
' Create temporary DataSet variable and
' GetChanges for modified rows only.
Dim tempDataSet As DataSet = _
dataSet.GetChanges(DataRowState.Modified)
' Check the DataSet for errors.
If tempDataSet.HasErrors Then
' Insert code to resolve errors.
End If
' After fixing errors, update the data source with
' the DataAdapter used to create the DataSet.
adapter.Update(tempDataSet)
End Sub
Megjegyzések
A GetChanges metódus egy második DataSet objektum előállítására szolgál, amely csak az eredetiben bevezetett módosításokat tartalmazza.
rowStates Az argumentum használatával megadhatja, hogy az új objektum milyen típusú módosításokat tartalmazzon.
Ez a visszaadott másolat úgy lett kialakítva, hogy újra egyesíthető legyen ezzel az eredeti DataSetpéldánysal. A kapcsolati korlátozások miatt a szülősorok Unchanged is belefoglalhatók. Ha a kívánt DataRowState sor nem található, a GetChanges metódus ad vissza null.