LinqDataSource.Updating イベント

定義

更新操作の前に発生します。Occurs before an update operation.

public:
 event EventHandler<System::Web::UI::WebControls::LinqDataSourceUpdateEventArgs ^> ^ Updating;
public event EventHandler<System.Web.UI.WebControls.LinqDataSourceUpdateEventArgs> Updating;
member this.Updating : EventHandler<System.Web.UI.WebControls.LinqDataSourceUpdateEventArgs> 
Public Custom Event Updating As EventHandler(Of LinqDataSourceUpdateEventArgs) 

次の例は、Updating イベントのイベントハンドラーを示しています。The following example shows an event handler for the Updating event. このコードでは、OriginalObject プロパティと NewObject プロパティのプロパティを比較して、値が変更されたかどうかを確認します。The code compares properties from the OriginalObject property and the NewObject property to see whether a value has changed. 値が変更された場合は、NewObject プロパティの値が trueに設定されます。If the value has changed, a value of the NewObject property is set to true.

protected void LinqDataSource_Updating(object sender, LinqDataSourceUpdateEventArgs e)
{
    Product originalProduct = (Product)e.OriginalObject;
    Product newProduct = (Product)e.NewObject;

    if (originalProduct.Category != newProduct.Category)
    {
        newProduct.CategoryChanged = true;
    }
}
Protected Sub LinqDataSource_Updating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.LinqDataSourceUpdateEventArgs)
    Dim originalProduct As Product
    Dim newProduct As Product

    originalProduct = CType(e.OriginalObject, Product)
    newProduct = CType(e.NewObject, Product)

    If (originalProduct.Category <> newProduct.Category) Then
        newProduct.CategoryChanged = True
    End If
End Sub

次の例は、検証例外を取得する Updating イベントのイベントハンドラーを示しています。The following example shows an event handler for the Updating event that retrieves validation exceptions.

Protected Sub LinqDataSource_Updating(ByVal sender As Object, _  
        ByVal e As LinqDataSourceUpdateEventArgs)  
    If (e.Exception IsNot Nothing) Then  
        For Each innerException As KeyValuePair(Of String, Exception) _  
               In e.Exception.InnerExceptions  
            Label1.Text &= innerException.Key & ": " & _  
                innerException.Value.Message & "<br />"  
        Next  
        e.ExceptionHandled = True  
    End If  
End Sub  
protected void LinqDataSource_Updating(object sender,   
        LinqDataSourceUpdateEventArgs e)  
{  
    if (e.Exception != null)  
    {  
        foreach (KeyValuePair<string, Exception> innerException in   
             e.Exception.InnerExceptions)  
        {  
        Label1.Text += innerException.Key + ": " +   
            innerException.Value.Message + "<br />";  
        }  
        e.ExceptionHandled = true;  
    }  
}  

前の例では、検証例外を取得します。The previous example retrieves validation exceptions. 値がプロパティの型と一致しない場合、例外がスローされる可能性があります。An exception might be thrown if a value does not match the type of the property. また、次の例に示すように、カスタマイズされたチェックからもスローされる場合があります。It might also be thrown from a customized check such as the one in the following example. OnAgeChanging メソッドは、Age プロパティの数値が負でないことを確認します。The OnAgeChanging method checks that the number for the Age property is not negative.

partial void  OnAgeChanging(int? value)  
{  
    if (value < 0)  
    {  
        throw new Exception("Age cannot be a negative number.");  
    }  
}  
Private Sub OnAgeChanging(ByVal value As System.Nullable(Of Integer))  
    If (value < 0) Then  
        Throw New Exception("Age cannot be a negative number.")  
    End If  
End Sub  

注釈

更新するオブジェクトの検証、データクラスからのデータの検証エラーの確認、更新操作の前の値の変更、または更新操作の取り消しを行うために、Updating イベントを処理します。Handle the Updating event to validate the object to be updated, to examine data validation errors from the data class, to change a value before the update operation, or to cancel the update operation. イベントハンドラーに渡される LinqDataSourceUpdateEventArgs オブジェクトには、元のオブジェクトと更新されたオブジェクトの両方が含まれます。The LinqDataSourceUpdateEventArgs object that is passed to event handlers contains both the original object and the updated object.

更新操作中に検証エラーが発生した場合、LinqDataSourceInsertEventArgs オブジェクトには、データクラスによってスローされた検証例外が含まれます。If a validation error occurs during the update operation, the LinqDataSourceInsertEventArgs object contains the validation exceptions that are thrown by the data class. 更新する値がデータクラスのプロパティの型と一致しない場合、またはカスタム検証チェックに合格しなかった場合は、検証エラーが発生します。A validation error occurs if a value to be updated does not match the type of the property in the data class, or if it does not pass a custom validation check. Updating イベントのイベントハンドラーでは、検証例外を取得して適切なアクションを実行できます。In an event handler for the Updating event, you can retrieve the validation exceptions and take appropriate action.

Updating イベントのイベントハンドラーで例外がスローされた場合は、そのイベントハンドラーで例外を処理する必要があります。If an exception is thrown in an event handler for the Updating event, you must handle the exception in that event handler. 例外は、(LinqDataSourceStatusEventArgs オブジェクトの Exception プロパティを使用して) Updated イベントのイベントハンドラーに渡されません。The exception will not be passed to an event handler for the Updated event (through the Exception property of the LinqDataSourceStatusEventArgs object). Exception プロパティには、Updating イベントの後にスローされる例外のみが含まれます。The Exception property contains only the exceptions that are thrown after the Updating event.

適用対象