|
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
|
Traduction
Source
|
ObjectDataSource.Deleting, événement
Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans System.Web.dll)
<%@ 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>
namespace Samples.AspNet.CS { using System; using System.Collections; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Web.UI; using System.Web.UI.WebControls; // // EmployeeLogic is a stateless business object that encapsulates // the operations you can perform on a NorthwindEmployee object. // public class EmployeeLogic { // Returns a collection of NorthwindEmployee objects. public static ICollection GetAllEmployees () { ArrayList al = new ArrayList(); // Use the SqlDataSource class to wrap the // ADO.NET code required to query the database. ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"]; SqlDataSource sds = new SqlDataSource(cts.ConnectionString, "SELECT EmployeeID FROM Employees"); try { IEnumerable IDs = sds.Select(DataSourceSelectArguments.Empty); // Iterate through the Enumeration and create a // NorthwindEmployee object for each ID. IEnumerator enumerator = IDs.GetEnumerator(); while (enumerator.MoveNext()) { // The IEnumerable contains DataRowView objects. DataRowView row = enumerator.Current as DataRowView; string id = row["EmployeeID"].ToString(); NorthwindEmployee nwe = new NorthwindEmployee(id); // Add the NorthwindEmployee object to the collection. al.Add(nwe); } } finally { // If anything strange happens, clean up. sds.Dispose(); } return al; } public static NorthwindEmployee GetEmployee(object anID) { return new NorthwindEmployee(anID); } public static void DeleteEmployee(NorthwindEmployee ne) { bool retval = ne.Delete(); if (! retval) { throw new NorthwindDataException("Employee delete failed."); } // Delete the object in memory. ne = null; } public static void DeleteEmployeeByID(int anID) { NorthwindEmployee tempEmp = new NorthwindEmployee(anID); DeleteEmployee(tempEmp); } } public class NorthwindEmployee { public NorthwindEmployee () { ID = DBNull.Value; lastName = ""; firstName = ""; } public NorthwindEmployee (object anID) { this.ID = anID; ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"]; SqlConnection conn = new SqlConnection (cts.ConnectionString); SqlCommand sc = new SqlCommand(" SELECT FirstName,LastName " + " FROM Employees " + " WHERE EmployeeID = @empId", conn); // Add the employee ID parameter and set its value. sc.Parameters.Add(new SqlParameter("@empId",SqlDbType.Int)).Value = Int32.Parse(anID.ToString()); SqlDataReader sdr = null; try { conn.Open(); sdr = sc.ExecuteReader(); // This is not a while loop. It only loops once. if (sdr != null && sdr.Read()) { // The IEnumerable contains DataRowView objects. this.firstName = sdr["FirstName"].ToString(); this.lastName = sdr["LastName"].ToString(); } else { throw new NorthwindDataException("Data not loaded for employee id."); } } finally { try { if (sdr != null) sdr.Close(); conn.Close(); } catch (SqlException) { // Log an event in the Application Event Log. throw; } } } private object ID; public object EmpID { get { return ID; } } private string lastName; public string LastName { get { return lastName; } set { lastName = value; } } private string firstName; public string FirstName { get { return firstName; } set { firstName = value; } } public bool Delete () { if (ID.Equals(DBNull.Value)) { // The Employee object is not persisted. return true; } else { // The Employee object is persisted. // Use the SqlDataSource control as a convenient wrapper for // the ADO.NET code needed to delete a record from the database. ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"]; SqlDataSource sds = new SqlDataSource(); try { sds.ConnectionString = cts.ConnectionString; sds.DeleteParameters.Add(new Parameter("empID", TypeCode.Int32, this.ID.ToString())); sds.DeleteCommand = "DELETE FROM [Order Details] " + "WHERE OrderID IN (SELECT OrderID FROM Orders WHERE EmployeeID=@empID)"; sds.Delete(); sds.DeleteCommand = "DELETE FROM Orders WHERE EmployeeID=@empID"; sds.Delete(); sds.DeleteCommand = "DELETE FROM EmployeeTerritories WHERE EmployeeID=@empID"; sds.Delete(); sds.DeleteCommand = "DELETE FROM Employees WHERE EmployeeID=@empID"; sds.Delete(); return true; } finally { // Clean up resources. sds.Dispose(); } } } } public class NorthwindDataException: Exception { public NorthwindDataException(string msg) : base (msg) { } } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.