DetailsViewUpdatedEventArgs.OldValues Property
Gets a dictionary that contains the original field name/value pairs for the updated record.
Assembly: System.Web (in System.Web.dll)
Property Value
Type: System.Collections.Specialized.IOrderedDictionaryAn IOrderedDictionary that contains a dictionary of the original field name/value pairs for the updated record.
Use the OldValues property to access the original field values for the updated record. For example, you can use these values to keep a log of updated records.
The OldValues property returns an object that implements the IOrderedDictionary interface. The object contains DictionaryEntry objects that represent the fields of the updated record.
Note |
|---|
As a shortcut, you can also use the indexer of the IOrderedDictionary object to access the field values directly. |
The following code example demonstrates how to use the OldValues property to access the original values of the non-key fields for the updated record.
<%@ 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_ItemUpdated(Object sender, DetailsViewUpdatedEventArgs e) { // Use the Exception property to determine whether an exception // occurred during the insert operation. if (e.Exception == null) { // Use the Values property to get the value entered by // the user for the CompanyName field. String keyFieldValue = e.Keys["CustomerID"].ToString(); // Display a confirmation message. MessageLabel.Text = "Record " + keyFieldValue + " updated successfully. "; // Display the old and new values. DisplayValues(e); if (e.AffectedRows == 1) { MessageLabel.Text += e.AffectedRows.ToString() + " record updated."; } else { MessageLabel.Text += e.AffectedRows.ToString() + " records updated."; } } else { // Insert the code to handle the exception. MessageLabel.Text = e.Exception.Message; // Use the ExceptionHandled property to indicate that the // exception is already handled. e.ExceptionHandled = true; // When an exception occurs, keep the DetailsView // control in edit mode. e.KeepInEditMode = true; } } void DisplayValues(DetailsViewUpdatedEventArgs e) { MessageLabel.Text += "<br/></br>"; // Iterate through the OldValue and NewValues // properties and display the values. for (int i = 0; i < e.OldValues.Count; i++) { MessageLabel.Text += "Old Value=" + e.OldValues[i].ToString() + ", New Value=" + e.NewValues[i].ToString() + "<br/>"; } MessageLabel.Text += "</br>"; } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>DetailsViewUpdatedEventArgs Example</title> </head> <body> <form id="form1" runat="server"> <h3>DetailsViewUpdatedEventArgs Example</h3> <asp:detailsview id="CustomerDetailsView" datasourceid="DetailsViewSource" autogeneraterows="true" autogenerateeditbutton="true" allowpaging="true" datakeynames="CustomerID" onitemupdated="CustomerDetailsView_ItemUpdated" 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>
Available since 2.0
