ObjectDataSource.Updating Event
Assembly: System.Web (in system.web.dll)
public: event ObjectDataSourceMethodEventHandler^ Updating { void add (ObjectDataSourceMethodEventHandler^ value); void remove (ObjectDataSourceMethodEventHandler^ value); }
/** @event */ public void add_Updating (ObjectDataSourceMethodEventHandler value) /** @event */ public void remove_Updating (ObjectDataSourceMethodEventHandler value)
JScript supports the use of events, but not the declaration of new ones.
Handle the Updating event to perform additional initialization that is specific to your application, to validate the values of parameters, or to change the parameter values before the ObjectDataSource control performs the update operation. The parameters are available as an IDictionary collection that is accessed by the InputParameters property, which is exposed by the ObjectDataSourceMethodEventArgs object.
For more information about handling events, see Consuming Events.
This section contains two code examples. The first code example demonstrates how to use a DropDownList control, TextBox controls, and several ObjectDataSource objects to update data. The second code example shows the EmployeeLogic class that is used in the first code example.
The following code example demonstrates how to use a DropDownList control, TextBox controls, and several ObjectDataSource controls to update data. The DropDownList displays the name of a Northwind employee, while the TextBox controls are used to enter and update address information. Because the UpdateParameters collection contains a ControlParameter that is bound to the selected value of the DropDownList, the button that raises the Update operation is enabled only after an employee is selected.
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.JSL" Assembly="Samples.AspNet.JSL" %>
<%@ Page Language="VJ#" %>
<%@ Import namespace="Samples.AspNet.JSL" %>
<Script runat="server">
// Add parameters and initialize the user interface
// only if an employee is selected.
private void Page_Load(Object sender, System.EventArgs e) throws NorthwindDataException
{
// Be sure the text boxes are initialized with
// data from the currently selected employee.
NorthwindEmployee selectedEmployee =
EmployeeLogic.GetEmployee(DropDownList1.get_SelectedValue());
if (selectedEmployee != null) {
AddressBox.set_Text(selectedEmployee.get_Address());
CityBox.set_Text(selectedEmployee.get_City());
PostalCodeBox.set_Text(selectedEmployee.get_PostalCode());
Button1.set_Enabled(true);
}
else {
Button1.set_Enabled(false);
}
} //Page_Load
// Press the button to update.
private void Btn_UpdateEmployee(Object sender, CommandEventArgs e)
{
ObjectDataSource2.Update();
} //Btn_UpdateEmployee
// Dynamically add parameters to the InputParameters collection.
private void NorthwindEmployeeUpdating(Object source,
ObjectDataSourceMethodEventArgs e)
{
// The names of the parameters are the same as
// the variable names for the method that is invoked to
// perform the Update. The InputParameters collection is
// an IDictionary collection of name/value pairs,
// not a ParameterCollection.
e.get_InputParameters().Add("anID", DropDownList1.get_SelectedValue());
e.get_InputParameters().Add("anAddress", AddressBox.get_Text());
e.get_InputParameters().Add("aCity", CityBox.get_Text());
e.get_InputParameters().Add("aPostalCode", PostalCodeBox.get_Text());
} //NorthwindEmployeeUpdating
</Script>
<html>
<head>
<title>ObjectDataSource - VJ# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<!-- The DropDownList is bound to the first ObjectDataSource. -->
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetAllEmployees"
typename="Samples.AspNet.JSL.EmployeeLogic" />
<p><asp:dropdownlist
id="DropDownList1"
runat="server"
datasourceid="ObjectDataSource1"
datatextfield="FullName"
datavaluefield="EmpID"
autopostback="True" /></p>
<!-- The second ObjectDataSource performs the Update. This
preserves the state of the DropDownList, which otherwise
would rebind when the DataSourceChanged event is
raised as a result of an Update operation. -->
<asp:objectdatasource
id="ObjectDataSource2"
runat="server"
updatemethod="UpdateEmployeeWrapper"
onupdating="NorthwindEmployeeUpdating"
typename="Samples.AspNet.JSL.EmployeeLogic" />
<p><asp:textbox
id="AddressBox"
runat="server" /></p>
<p><asp:textbox
id="CityBox"
runat="server" /></p>
<p><asp:textbox
id="PostalCodeBox"
runat="server" /></p>
<asp:button
id="Button1"
runat="server"
text="Update Employee"
oncommand="Btn_UpdateEmployee" />
</form>
</body>
</html>
The following code example shows the EmployeeLogic class that is used in the preceding code example.
package Samples.AspNet.JSL;
import System.*;
import System.Collections.*;
import System.Configuration.*;
import System.Data.*;
import System.Data.SqlClient.*;
import System.Web.UI.*;
import System.Web.UI.WebControls.*;
//
// EmployeeLogic is a stateless business object that encapsulates
// the operations one can perform on a NorthwindEmployee object.
//
public class EmployeeLogic
{
// Returns a collection of NorthwindEmployee objects.
public static ICollection GetAllEmployees() throws NorthwindDataException
{
ArrayList al = new ArrayList();
// Use the SqlDataSource class to wrap the
// ADO.NET code required to query the database.
ConnectionStringSettings cts =
ConfigurationManager.get_ConnectionStrings().
get_Item("NorthwindConnection");
SqlDataSource sds = new SqlDataSource(cts.get_ConnectionString(),
"SELECT EmployeeID FROM Employees");
try {
IEnumerable ids = sds.Select(DataSourceSelectArguments.get_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 = (DataRowView)enumerator.get_Current();
String idObj = row.get_Item("EmployeeID").ToString();
NorthwindEmployee nwe = new NorthwindEmployee(idObj);
// Add the NorthwindEmployee object to the collection.
al.Add(nwe);
}
}
finally {
// If anything strange happens, clean up.
sds.Dispose();
}
return al;
} //GetAllEmployees
public static NorthwindEmployee GetEmployee(Object anID)
throws NorthwindDataException
{
ArrayList al = (ArrayList)GetAllEmployees();
IEnumerator enumerator = al.GetEnumerator();
while (enumerator.MoveNext()) {
// The IEnumerable contains initialized NorthwindEmployee objects.
NorthwindEmployee ne = (NorthwindEmployee)enumerator.get_Current();
if (ne.get_EmpID().Equals(anID.ToString())) {
return ne;
}
}
return null;
} //GetEmployee
public static void UpdateEmployee(NorthwindEmployee ne)
throws NorthwindDataException
{
boolean retVal = ne.Update();
if (!(retVal)) {
throw new NorthwindDataException("Employee update failed.");
}
} //UpdateEmployee
// This method is added as a conveniece wrapper on the original
// implementation.
public static void UpdateEmployeeWrapper(String anID, String anAddress,
String aCity, String aPostalCode) throws NorthwindDataException
{
NorthwindEmployee ne = new NorthwindEmployee(anID);
ne.set_Address(anAddress);
ne.set_City(aCity);
ne.set_PostalCode(aPostalCode);
UpdateEmployee(ne);
} //UpdateEmployeeWrapper
// And so on...
} //EmployeeLogic
public class NorthwindEmployee
{
public NorthwindEmployee(Object anID) throws NorthwindDataException
{
this.id = anID;
ConnectionStringSettings cts =
ConfigurationManager.get_ConnectionStrings().
get_Item("NorthwindConnection");
SqlConnection conn = new SqlConnection(cts.get_ConnectionString());
SqlCommand sc = new SqlCommand(" SELECT FirstName,LastName,Address,"
+ "City,PostalCode " + " FROM Employees "
+ " WHERE EmployeeID = @empId", conn);
// Add the employee ID parameter and set its value.
sc.get_Parameters().Add(new SqlParameter("@empId", SqlDbType.Int)).
set_Value(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.get_Item("FirstName").ToString();
this.lastName = sdr.get_Item("LastName").ToString();
this.address = sdr.get_Item("Address").ToString();
this.city = sdr.get_Item("City").ToString();
this.postalCode = sdr.get_Item("PostalCode").ToString();
}
else {
throw new NorthwindDataException("Data not loaded for"
+ " employee id.");
}
}
finally {
try {
if (sdr != null) {
sdr.Close();
}
conn.Close();
}
catch (SqlException exp) {
// Log an event in the Application Event Log.
}
}
} //NorthwindEmployee
private Object id;
/** @property
*/
public Object get_EmpID()
{
return id;
} //get_EmpID
private String lastName;
/** @property
*/
public void set_LastName(String value)
{
lastName = value;
} //set_LastName
private String firstName;
/** @property
*/
public void set_FirstName(String value)
{
firstName = value;
} //set_FirstName
/** @property
*/
public String get_FullName()
{
return firstName + " " + lastName;
} //get_FullName
private String address;
/** @property
*/
public String get_Address()
{
return address;
} //get_Address
/** @property
*/
public void set_Address(String value)
{
address = value;
} //set_Address
private String city;
/** @property
*/
public String get_City()
{
return city;
} //get_City
/** @property
*/
public void set_City(String value)
{
city = value;
} //set_City
private String postalCode;
/** @property
*/
public String get_PostalCode()
{
return postalCode;
} //get_PostalCode
/** @property
*/
public void set_PostalCode(String value)
{
postalCode = value;
} //set_PostalCode
public boolean Update()
{
// Implement Update logic.
return true;
} //Update
} //NorthwindEmployee
public class NorthwindDataException extends Exception
{
public NorthwindDataException(String msg)
{
super(msg);
} //NorthwindDataException
} //NorthwindDataException
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.