ObjectDataSourceStatusEventArgs.Exception Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wrapper für alle Ausnahmen ab, die von der Methode ausgelöst werden, die ObjectDataSource vom Steuerelement während eines Datenvorgangs aufgerufen wird.
public:
property Exception ^ Exception { Exception ^ get(); };
public Exception Exception { get; }
member this.Exception : Exception
Public ReadOnly Property Exception As Exception
Eigenschaftswert
Ein Exception , der alle Ausnahmen umschließt, die vom Geschäftsobjekt in seinem InnerExceptionObjekt ausgelöst werden.
Beispiele
Im folgenden Codebeispiel wird die Verwendung eines ObjectDataSource Steuerelements mit einem Geschäftsobjekt und einem GridView Steuerelement zum Löschen von Daten veranschaulicht. Zunächst GridView wird eine Gruppe aller Mitarbeiter angezeigt, wobei die von der SelectMethod Eigenschaft angegebene Methode zum Abrufen der Daten aus dem EmployeeLogic Objekt verwendet wird. Da die AutoGenerateDeleteButton Eigenschaft auf true festgelegt ist, zeigt das GridView Steuerelement automatisch eine Schaltfläche "Löschen " an.
Wenn Sie auf die Schaltfläche "Löschen " klicken, wird die Delete Aktion mithilfe der Methode ausgeführt, die von der DeleteMethod Eigenschaft und allen Parametern angegeben wird, die in der DeleteParameters Auflistung angegeben sind.
In diesem Codebeispiel werden auch einige Vorverarbeitungs- und Nachbearbeitungsschritte ausgeführt. Der NorthwindEmployeeDeleting Delegat wird aufgerufen, um das Deleting Ereignis zu behandeln, bevor die Delete Aktion ausgeführt wird, und der NorthwindEmployeeDeleted Delegat wird aufgerufen, um das Deleted Ereignis zu behandeln, nachdem die Delete Aktion abgeschlossen wurde, um eine Ausnahmebehandlung durchzuführen. Wenn ein NorthwindDataException Beispiel ausgelöst wird, wird es von der NorthwindEmployeeDeleted Stellvertretung behandelt.
Informationen zur Implementierung des von diesem Codebeispiel verwendeten Geschäftsobjekts EmployeeLogic der mittleren Ebene finden Sie in der Klassenübersicht.ObjectDataSourceStatusEventArgs
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void NorthwindEmployeeDeleting(object source, ObjectDataSourceMethodEventArgs e)
{
// The GridView passes the ID of the employee
// to be deleted. However, the buisiness object, EmployeeLogic,
// requires a NorthwindEmployee parameter, named "ne". Create
// it now and add it to the parameters collection.
IDictionary paramsFromPage = e.InputParameters;
if (paramsFromPage["EmpID"] != null) {
NorthwindEmployee ne
= new NorthwindEmployee( Int32.Parse(paramsFromPage["EmpID"].ToString()));
// Remove the old EmpID parameter.
paramsFromPage.Clear();
paramsFromPage.Add("ne", ne);
}
}
private void NorthwindEmployeeDeleted(object source, ObjectDataSourceStatusEventArgs e)
{
// Handle the Exception if it is a NorthwindDataException
if (e.Exception != null)
{
// Handle the specific exception type. The ObjectDataSource wraps
// any Exceptions in a TargetInvokationException wrapper, so
// check the InnerException property for expected Exception types.
if (e.Exception.InnerException is NorthwindDataException)
{
Label1.Text = e.Exception.InnerException.Message;
// Because the exception is handled, there is
// no reason to throw it.
e.ExceptionHandled = true;
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ObjectDataSource - C# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1"
autogeneratedeletebutton="true"
autogeneratecolumns="false"
datakeynames="EmpID">
<columns>
<asp:boundfield headertext="EmpID" datafield="EmpID" />
<asp:boundfield headertext="First Name" datafield="FirstName" />
<asp:boundfield headertext="Last Name" datafield="LastName" />
</columns>
</asp:gridview>
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetAllEmployees"
deletemethod="DeleteEmployee"
ondeleting="NorthwindEmployeeDeleting"
ondeleted="NorthwindEmployeeDeleted"
typename="Samples.AspNet.CS.EmployeeLogic">
<deleteparameters>
<asp:parameter name="EmpID" type="Int32" />
</deleteparameters>
</asp:objectdatasource>
<asp:label id="Label1" runat="server" />
</form>
</body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ Import namespace="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
' Called before a Delete operation.
Private Sub NorthwindEmployeeDeleting(ByVal source As Object, ByVal e As ObjectDataSourceMethodEventArgs)
' The GridView passes the ID of the employee
' to be deleted. However, the business object, EmployeeLogic,
' requires a NorthwindEmployee parameter, named "ne". Create
' it now and add it to the parameters collection.
Dim paramsFromPage As IDictionary = e.InputParameters
If Not paramsFromPage("EmpID") Is Nothing Then
Dim ne As New NorthwindEmployee(paramsFromPage("EmpID").ToString())
' Remove the old EmpID parameter.
paramsFromPage.Clear()
paramsFromPage.Add("ne", ne)
End If
End Sub ' NorthwindEmployeeDeleting
' Called after a Delete operation.
Private Sub NorthwindEmployeeDeleted(ByVal source As Object, ByVal e As ObjectDataSourceStatusEventArgs)
' Handle the Exception if it is a NorthwindDataException.
If Not e.Exception Is Nothing Then
' Handle the specific exception type. The ObjectDataSource wraps
' any Exceptions in a TargetInvokationException wrapper, so
' check the InnerException property for the expected Exception types.
If e.Exception.InnerException.GetType().Equals(GetType(NorthwindDataException)) Then
Label1.Text = e.Exception.InnerException.Message
' Because the exception is handled, there is
' no reason to throw it.
e.ExceptionHandled = True
End If
End If
End Sub ' NorthwindEmployeeDeleted
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ObjectDataSource - VB Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1"
autogeneratedeletebutton="true"
autogeneratecolumns="false"
datakeynames="EmpID">
<columns>
<asp:boundfield headertext="EmpID" datafield="EmpID" />
<asp:boundfield headertext="First Name" datafield="FirstName" />
<asp:boundfield headertext="Last Name" datafield="LastName" />
</columns>
</asp:gridview>
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetAllEmployees"
deletemethod="DeleteEmployee"
ondeleting="NorthwindEmployeeDeleting"
ondeleted="NorthwindEmployeeDeleted"
typename="Samples.AspNet.VB.EmployeeLogic">
<deleteparameters>
<asp:parameter name="EmpID" type="Int32" />
</deleteparameters>
</asp:objectdatasource>
<asp:label id="Label1" runat="server" />
</form>
</body>
</html>
Hinweise
Die Exception Ausnahme stellt nicht die tatsächliche Ausnahme dar, die von der Geschäftsobjektdatenmethode ausgelöst wird. Sie können die InnerException Eigenschaft verwenden, um auf die ausgelöste Ausnahme zuzugreifen.