DataTable.ColumnChanging Event
Occurs when a value is being changed for the specified DataColumn in a DataRow.
[Visual Basic] Public Event ColumnChanging As DataColumnChangeEventHandler [C#] public event DataColumnChangeEventHandler ColumnChanging; [C++] public: __event DataColumnChangeEventHandler* ColumnChanging;
[JScript] In JScript, you can handle the events defined by a class, but you cannot define your own.
Event Data
The event handler receives an argument of type DataColumnChangeEventArgs containing data related to this event. The following DataColumnChangeEventArgs properties provide information specific to this event.
| Property | Description |
|---|---|
| Column | Gets the DataColumn with a changing value. |
| ProposedValue | Gets or sets the proposed new value for the column. |
| Row | Gets the DataRow of the column with a changing value. |
Remarks
For more information see Working with DataTable Events.
Example
[Visual Basic] Private Shared Sub DataTableColumnChanging() Dim custTable As DataTable = New DataTable("Customers") ' add columns custTable.Columns.Add( "id", Type.GetType("System.Int32") ) custTable.Columns.Add( "name", Type.GetType("System.String") ) custTable.Columns.Add( "address", Type.GetType("System.String") ) ' set PrimaryKey custTable.Columns( "id" ).Unique = true custTable.PrimaryKey = New DataColumn() { custTable.Columns("id") } ' add a ColumnChanging event handler for the table. AddHandler custTable.ColumnChanging, New DataColumnChangeEventHandler( AddressOf Column_Changing ) ' add ten rows Dim id As Integer For id = 1 To 10 custTable.Rows.Add( _ New Object() { id, string.Format("customer{0}", id), string.Format("address{0}", id) } ) Next custTable.AcceptChanges() ' change the name column in all the rows Dim row As DataRow For Each row In custTable.Rows row("name") = string.Format( "vip{0}", row("id") ) Next End Sub Private Shared Sub Column_Changing(sender As Object, e As DataColumnChangeEventArgs) Console.WriteLine( "Column_Changing Event: name={0}; Column={1}; proposed name={2}", _ e.Row("name"), e.Column.ColumnName, e.ProposedValue) End Sub [C#] private static void DataTableColumnChanging() { DataTable custTable = new DataTable("Customers"); // add columns custTable.Columns.Add( "id", typeof(int) ); custTable.Columns.Add( "name", typeof(string) ); custTable.Columns.Add( "address", typeof(string) ); // set PrimaryKey custTable.Columns[ "id" ].Unique = true; custTable.PrimaryKey = new DataColumn[] { custTable.Columns["id"] }; // add a ColumnChanging event handler for the table. custTable.ColumnChanging += new DataColumnChangeEventHandler( Column_Changing ); // add ten rows for( int id=1; id<=10; id++ ) { custTable.Rows.Add( new object[] { id, string.Format("customer{0}", id), string.Format("address{0}", id) } ); } custTable.AcceptChanges(); // change the name column in all the rows foreach( DataRow row in custTable.Rows ) { row["name"] = string.Format( "vip{0}", row["id"] ); } } private static void Column_Changing( object sender, DataColumnChangeEventArgs e ) { Console.WriteLine( "Column_Changing Event: name={0}; Column={1}; proposed name={2}", e.Row["name"], e.Column.ColumnName, e.ProposedValue ); } [C++] public: static void DataTableColumnChanging() { DataTable* custTable = new DataTable(S"Customers"); // add columns custTable->Columns->Add(S"id", __typeof(int)); custTable->Columns->Add(S"name", __typeof(String)); custTable->Columns->Add(S"address", __typeof(String)); // set PrimaryKey custTable->Columns->Item[ S"id" ]->Unique = true; DataColumn* ColumnArray[] = { custTable->Columns->Item[S"id"] }; custTable->PrimaryKey = ColumnArray; // add a ColumnChanging event handler for the table. custTable->ColumnChanging += new DataColumnChangeEventHandler(0, Column_Changing); // add ten rows for (int id=1; id<=10; id++) { Object* temp0 [] = {__box(id), String::Format(S"customer {0}", __box(id)), String::Format(S"address {0}", __box(id)) }; custTable->Rows->Add(temp0); } custTable->AcceptChanges(); // change the name column in all the rows System::Collections::IEnumerator* myEnum = custTable->Rows->GetEnumerator(); while (myEnum->MoveNext()) { DataRow* row = __try_cast<DataRow*>(myEnum->Current); row->Item[S"name"] = String::Format(S"vip {0}", row->Item[S"id"]); } } public: static void Column_Changing(Object* sender, System::Data::DataColumnChangeEventArgs* e) { Console::WriteLine(S"Column_Changing Event: name= {0}; Column= {1}; proposed name= {2}", e->Row->Item[S"name"], e->Column->ColumnName, e->ProposedValue); }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family