DataTable.ColumnChanging イベント
DataRow 内の指定した DataColumn の値が変更されているときに発生します。
Public Event ColumnChanging As DataColumnChangeEventHandler
[C#]
public event DataColumnChangeEventHandler ColumnChanging;
[C++]
public: __event DataColumnChangeEventHandler* ColumnChanging;
[JScript] JScript では、このクラスで定義されているイベントを処理できます。ただし、独自に定義することはできません。
イベント データ
イベント ハンドラが、このイベントに関連するデータを含む、DataColumnChangeEventArgs 型の引数を受け取りました。次の DataColumnChangeEventArgs プロパティには、このイベントの固有の情報が記載されます。
プロパティ | 説明 |
---|---|
Column | 値が変化する DataColumn を取得します。 |
ProposedValue | 列の提示された新しい値を取得または設定します。 |
Row | 値が変化する列の DataRow を取得します。 |
解説
詳細については、「 DataTable イベントの使用 」を参照してください。
使用例
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ