Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. |
Traduction
Source
|
DetailsViewUpdateEventHandler, délégué
Représente la méthode qui gère l'événement ItemUpdating d'un contrôle DetailsView.
Assembly : System.Web (dans System.Web.dll)
public delegate void DetailsViewUpdateEventHandler( Object sender, DetailsViewUpdateEventArgs e )
Paramètres
- sender
- Type : System.Object
Source de l'événement.
- e
- Type : System.Web.UI.WebControls.DetailsViewUpdateEventArgs
DetailsViewUpdateEventArgs qui contient les données d'événement.
Le contrôle DetailsView déclenche l'événement ItemUpdating lors d'un clic sur un bouton de mise à jour (bouton dont la propriété CommandName a la valeur "Update") situé dans le contrôle, mais avant mise à jour de l'enregistrement par le contrôle DetailsView. Cela vous permet de fournir un gestionnaire d'événements qui exécute une routine personnalisée, par exemple l'encodage HTML des valeurs d'un enregistrement avant la mise à jour dans la source de données, chaque fois que cet événement se produit.
Lorsque vous créez un délégué DetailsViewUpdateEventHandler, vous identifiez la méthode qui gérera l'événement. Pour associer l'événement à votre gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. Pour plus d'informations sur les délégués de gestionnaires d'événements, consultez Événements et délégués.
L'exemple de code suivant montre comment ajouter par programme un délégué DetailsViewUpdateEventHandler à l'événement ItemUpdating d'un contrôle DetailsView.
<%@ 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"> void Page_Load(Object sender, EventArgs e) { // Create a new DetailsView object. DetailsView customerDetailsView = new DetailsView(); // Set the DetailsView object's properties. customerDetailsView.ID = "CustomerDetailsView"; customerDetailsView.DataSourceID = "DetailsViewSource"; customerDetailsView.AutoGenerateRows = true; customerDetailsView.AutoGenerateEditButton = true; customerDetailsView.AllowPaging = true; customerDetailsView.DataKeyNames = new String[1] { "CustomerID" }; customerDetailsView.PagerSettings.Position = PagerPosition.Bottom; // Programmatically register the event-handling methods // for the DetailsView control. customerDetailsView.ItemUpdating += new DetailsViewUpdateEventHandler( this.CustomerDetailsView_ItemUpdating); customerDetailsView.ModeChanging += new DetailsViewModeEventHandler( this.CustomerDetailsView_ModeChanging); // Add the DetailsView object to the Controls collection // of the PlaceHolder control. DetailsViewPlaceHolder.Controls.Add(customerDetailsView); } void CustomerDetailsView_ItemUpdating(Object sender, DetailsViewUpdateEventArgs e) { // Validate the field values entered by the user. This // example determines whether the user left any fields // empty. Use the NewValues property to access the new // values entered by the user. ArrayList emptyFieldList = ValidateFields((IOrderedDictionary)e.NewValues); if (emptyFieldList.Count > 0) { // The user left some fields empty. Display an error message. // Use the Keys property to retrieve the key field value. String keyValue = e.Keys["CustomerID"].ToString(); MessageLabel.Text = "You must enter a value for all fields of record " + keyValue + ".<br/>The following fields are missing:<br/><br/>"; // Display the missing fields. foreach (String value in emptyFieldList) { // Use the OldValues property access the original value // of a field. MessageLabel.Text += value + " - Original Value = " + e.OldValues[value].ToString() + "<br />"; } // Cancel the update operation. e.Cancel = true; } else { // The field values passed validation. Clear the // error message label. MessageLabel.Text = ""; } } ArrayList ValidateFields(IOrderedDictionary list) { // Create an ArrayList object to store the // names of any empty fields. ArrayList emptyFieldList = new ArrayList(); // Iterate though the field values entered by // the user and check for an empty field. Empty // fields contain a null value. foreach (DictionaryEntry entry in list) { if (entry.Value == null) { // Add the field name to the ArrayList object. emptyFieldList.Add(entry.Key.ToString()); } } return emptyFieldList; } void CustomerDetailsView_ModeChanging(Object sender, DetailsViewModeEventArgs e) { if (e.CancelingEdit) { // The user canceled the update operation. // Clear the error message label. MessageLabel.Text = ""; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>DetailsViewUpdateEventHandler Example</title> </head> <body> <form id="form1" runat="server"> <h3>DetailsViewUpdateEventHandler Example</h3> <!-- Use a PlaceHolder control as the container for the --> <!-- dynamically generated DetailsView control. --> <asp:placeholder id="DetailsViewPlaceHolder" runat="server"/> <br/><br/> <asp:label id="MessageLabel" forecolor="Red" runat="server"/> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the web.config file. --> <asp:sqldatasource id="DetailsViewSource" selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]" updatecommand="Update [Customers] Set [CompanyName]=@CompanyName, [Address]=@Address, [City]=@City, [PostalCode]=@PostalCode, [Country]=@Country Where [CustomerID]=@CustomerID" connectionstring= "<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
L'exemple de code suivant montre comment ajouter de façon déclarative un délégué DetailsViewUpdateEventHandler à l'événement ItemUpdating d'un contrôle DetailsView.
<%@ 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"> void CustomerDetailsView_ItemUpdating(Object sender, DetailsViewUpdateEventArgs e) { // Validate the field values entered by the user. This // example determines whether the user left any fields // empty. Use the NewValues property to access the new // values entered by the user. ArrayList emptyFieldList = ValidateFields((IOrderedDictionary)e.NewValues); if (emptyFieldList.Count > 0) { // The user left some fields empty. Display an error message. // Use the Keys property to retrieve the key field value. String keyValue = e.Keys["CustomerID"].ToString(); MessageLabel.Text = "You must enter a value for all fields of record " + keyValue + ".<br/>The following fields are missing:<br/><br/>"; // Display the missing fields. foreach (String value in emptyFieldList) { // Use the OldValues property access the original value // of a field. MessageLabel.Text += value + " - Original Value = " + e.OldValues[value].ToString() + "<br />"; } // Cancel the update operation. e.Cancel = true; } else { // The field values passed validation. Clear the // error message label. MessageLabel.Text = ""; } } ArrayList ValidateFields(IOrderedDictionary list) { // Create an ArrayList object to store the // names of any empty fields. ArrayList emptyFieldList = new ArrayList(); // Iterate though the field values entered by // the user and check for an empty field. Empty // fields contain a null value. foreach (DictionaryEntry entry in list) { if (entry.Value == null) { // Add the field name to the ArrayList object. emptyFieldList.Add(entry.Key.ToString()); } } return emptyFieldList; } void CustomerDetailsView_ModeChanging(Object sender, DetailsViewModeEventArgs e) { if (e.CancelingEdit) { // The user canceled the update operation. // Clear the error message label. MessageLabel.Text = ""; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>DetailsViewUpdateEventHandler Example</title> </head> <body> <form id="form1" runat="server"> <h3>DetailsViewUpdateEventHandler Example</h3> <asp:detailsview id="CustomerDetailsView" datasourceid="DetailsViewSource" autogeneraterows="true" autogenerateeditbutton="true" allowpaging="true" datakeynames="CustomerID" onitemupdating="CustomerDetailsView_ItemUpdating" onmodechanging="CustomerDetailsView_ModeChanging" runat="server"> <pagersettings position="Bottom"/> </asp:detailsview> <br/> <asp:label id="MessageLabel" forecolor="Red" runat="server"/> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the web.config file. --> <asp:sqldatasource id="DetailsViewSource" selectcommand="Select [CustomerID], [CompanyName], [Address], [City], [PostalCode], [Country] From [Customers]" updatecommand="Update [Customers] Set [CompanyName]=@CompanyName, [Address]=@Address, [City]=@City, [PostalCode]=@PostalCode, [Country]=@Country Where [CustomerID]=@CustomerID" connectionstring= "<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
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.