次の方法で共有


LinqDataSource.Updating イベント

定義

更新操作の前に発生します。

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 示しています。 このコードでは、 プロパティと プロパティのプロパティをOriginalObjectNewObject比較して、値が変更されたかどうかを確認します。 値が変更された場合、 プロパティの NewObject 値は に 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 イベント ハンドラーを示しています。

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;  
    }  
}  

前の例では、検証例外を取得します。 値がプロパティの型と一致しない場合、例外がスローされることがあります。 また、次の例のようなカスタマイズされたチェックからスローされる場合もあります。 メソッドは OnAgeChanging 、プロパティの数値が負ではないことを Age 確認します。

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 処理して、更新するオブジェクトを検証したり、データ クラスのデータ検証エラーを調べたり、更新操作の前に値を変更したり、更新操作を取り消したりします。 LinqDataSourceUpdateEventArgsイベント ハンドラーに渡される オブジェクトには、元の オブジェクトと更新された オブジェクトの両方が含まれます。

更新操作中に検証エラーが発生した場合、 LinqDataSourceInsertEventArgs オブジェクトにはデータ クラスによってスローされる検証例外が含まれます。 更新する値がデータ クラスのプロパティの型と一致しない場合、またはカスタム検証チェックに合格しない場合、検証エラーが発生します。 イベントのイベント ハンドラー Updating では、検証例外を取得し、適切なアクションを実行できます。

イベントのイベント ハンドラー Updating で例外がスローされた場合は、そのイベント ハンドラーで例外を処理する必要があります。 例外は、(オブジェクトの プロパティを介して) イベントのUpdatedイベント ハンドラーにExceptionLinqDataSourceStatusEventArgs渡されません。 プロパティには Exception 、イベントの後 Updating にスローされる例外のみが含まれます。

適用対象