DataRowView
Class
Definition
Represents a customized view of a DataRow.
public class DataRowView : System.ComponentModel.ICustomTypeDescriptor, System.ComponentModel.IDataErrorInfo, System.ComponentModel.IEditableObject, System.ComponentModel.INotifyPropertyChanged
- Inheritance
-
DataRowView
- Implements
Inherited Members
System.Object
Examples
The following example uses the RowVersion property to determine the state of a row in the DataRowView. (See RowFilter for another example using DataRowView.)
private static void DemonstrateRowVersion()
{
// Create a DataTable with one column.
DataTable table = new DataTable("Table");
DataColumn column = new DataColumn("Column");
table.Columns.Add(column);
// Add ten rows.
DataRow row;
for (int i = 0; i < 10; i++)
{
row = table.NewRow();
row["Column"] = "item " + i;
table.Rows.Add(row);
}
table.AcceptChanges();
// Create a DataView with the table.
DataView view = new DataView(table);
// Change one row's value:
table.Rows[1]["Column"] = "Hello";
// Add one row:
row = table.NewRow();
row["Column"] = "World";
table.Rows.Add(row);
// Set the RowStateFilter to display only added
// and modified rows.
view.RowStateFilter = DataViewRowState.Added |
DataViewRowState.ModifiedCurrent;
// Print those rows. Output includes "Hello" and "World".
PrintView(view, "ModifiedCurrent and Added");
// Set filter to display only originals of modified rows.
view.RowStateFilter = DataViewRowState.ModifiedOriginal;
PrintView(view, "ModifiedOriginal");
// Delete three rows.
table.Rows[1].Delete();
table.Rows[2].Delete();
table.Rows[3].Delete();
// Set the RowStateFilter to display only deleted rows.
view.RowStateFilter = DataViewRowState.Deleted;
PrintView(view, "Deleted");
// Set filter to display only current rows.
view.RowStateFilter = DataViewRowState.CurrentRows;
PrintView(view, "Current");
// Set filter to display only unchanged rows.
view.RowStateFilter = DataViewRowState.Unchanged;
PrintView(view, "Unchanged");
// Set filter to display only original rows.
// Current values of unmodified rows are also returned.
view.RowStateFilter = DataViewRowState.OriginalRows;
PrintView(view, "OriginalRows");
}
private static void PrintView(DataView view, string label)
{
Console.WriteLine("\n" + label);
for (int i = 0; i < view.Count; i++)
{
Console.WriteLine(view[i]["Column"]);
Console.WriteLine("DataViewRow.RowVersion: {0}",
view[i].RowVersion);
}
}
Private Sub DemonstrateRowVersion()
Dim i As Integer
' Create a DataTable with one column.
Dim table As New DataTable("Table")
Dim column As New DataColumn("Column")
table.Columns.Add(column)
' Add ten rows.
Dim row As DataRow
For i = 0 To 9
row = table.NewRow()
row("Column") = "item " + i.ToString()
table.Rows.Add(row)
Next i
table.AcceptChanges()
' Create a DataView with the table.
Dim view As New DataView(table)
' Change one row's value:
table.Rows(1)("Column") = "Hello"
' Add one row:
row = table.NewRow()
row("Column") = "World"
table.Rows.Add(row)
' Set the RowStateFilter to display only added and modified rows.
view.RowStateFilter = _
DataViewRowState.Added Or DataViewRowState.ModifiedCurrent
' Print those rows. Output includes "Hello" and "World".
PrintView(view, "ModifiedCurrent and Added")
' Set filter to display only originals of modified rows.
view.RowStateFilter = DataViewRowState.ModifiedOriginal
PrintView(view, "ModifiedOriginal")
' Delete three rows.
table.Rows(1).Delete()
table.Rows(2).Delete()
table.Rows(3).Delete()
' Set the RowStateFilter to display only deleted rows.
view.RowStateFilter = DataViewRowState.Deleted
PrintView(view, "Deleted")
' Set filter to display only current rows.
view.RowStateFilter = DataViewRowState.CurrentRows
PrintView(view, "Current")
' Set filter to display only unchanged rows.
view.RowStateFilter = DataViewRowState.Unchanged
PrintView(view, "Unchanged")
' Set filter to display only original rows.
' Current values of unmodified rows are also returned.
view.RowStateFilter = DataViewRowState.OriginalRows
PrintView(view, "OriginalRows")
End Sub
Private Sub PrintView(ByVal view As DataView, ByVal label As String)
Console.WriteLine(ControlChars.Cr + label)
Dim i As Integer
For i = 0 To view.Count - 1
Console.WriteLine(view(i)("Column"))
Console.WriteLine("DataRowView.RowVersion: {0}", _
view(i).RowVersion)
Next i
End Sub
Remarks
Whenever data is displayed, such as in a DataGrid control, only one version of each row can be displayed. The displayed row is a DataRowView.
A DataRowView can have one of four different version states: Default, Original, Current, and Proposed.
After invoking BeginEdit on a DataRow, any edited value becomes the Proposed value. Until either CancelEdit or EndEdit is invoked, the row has an Original and a Proposed version. If CancelEdit is invoked, the proposed version is discarded, and the value reverts to Original. If EndEdit is invoked, the DataRowView no longer has a Proposed version; instead, the proposed value becomes the current value. Default values are available only on rows that have columns with default values defined.
Properties
| DataView |
Gets the DataView to which this row belongs. |
| IsEdit |
Indicates whether the row is in edit mode. |
| IsNew |
Indicates whether a DataRowView is new. |
| Item[Int32] |
Gets or sets a value in a specified column. |
| Item[String] |
Gets or sets a value in a specified column. |
| Row |
Gets the DataRow being viewed. |
| RowVersion |
Gets the current version description of the DataRow. |
Methods
| BeginEdit() |
Begins an edit procedure. |
| CancelEdit() |
Cancels an edit procedure. |
| CreateChildView(DataRelation) |
Returns a DataView for the child DataTable with the specified child DataRelation. |
| CreateChildView(String) |
Returns a DataView for the child DataTable with the specified child DataRelation name. |
| CreateChildView(DataRelation, Boolean) |
Returns a DataView for the child DataTable with the specified DataRelation and parent.. |
| CreateChildView(String, Boolean) |
Returns a DataView for the child DataTable with the specified DataRelation name and parent. |
| Delete() |
Deletes a row. |
| EndEdit() |
Commits changes to the underlying DataRow and ends the editing session that was begun with BeginEdit(). Use CancelEdit() to discard the changes made to the DataRow. |
| Equals(Object) |
Gets a value indicating whether the current DataRowView is identical to the specified object. |
| GetHashCode() |
Returns the hash code of the DataRow object. |
Events
| PropertyChanged |
Event that is raised when a DataRowView property is changed. |
Explicit Interface Implementations
| ICustomTypeDescriptor.GetAttributes() |
Returns a collection of custom attributes for this instance of a component. |
| ICustomTypeDescriptor.GetClassName() |
Returns the class name of this instance of a component. |
| ICustomTypeDescriptor.GetComponentName() |
Returns the name of this instance of a component. |
| ICustomTypeDescriptor.GetConverter() |
Returns a type converter for this instance of a component. |
| ICustomTypeDescriptor.GetDefaultEvent() |
Returns the default event for this instance of a component. |
| ICustomTypeDescriptor.GetDefaultProperty() |
Returns the default property for this instance of a component. |
| ICustomTypeDescriptor.GetEditor(Type) |
Returns an editor of the specified type for this instance of a component. |
| ICustomTypeDescriptor.GetEvents() |
Returns the events for this instance of a component. |
| ICustomTypeDescriptor.GetEvents(Attribute[]) |
Returns the events for this instance of a component with specified attributes. |
| ICustomTypeDescriptor.GetProperties() |
Returns the properties for this instance of a component. |
| ICustomTypeDescriptor.GetProperties(Attribute[]) |
Returns the properties for this instance of a component with specified attributes. |
| ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor) |
Returns an object that contains the property described by the specified property descriptor. |
| IDataErrorInfo.Error |
Gets a message that describes any validation errors for the object. |
| IDataErrorInfo.Item[String] |
Gets the error message for the property with the given name. |
Thread Safety
This type is safe for multithreaded read operations. You must synchronize any write operations.