ObjectDataSourceView.InsertMethod Property
Assembly: System.Web (in system.web.dll)
/** @property */ public String get_InsertMethod () /** @property */ public void set_InsertMethod (String value)
public function get InsertMethod () : String public function set InsertMethod (value : String)
Property Value
A string that represents the name of the method or function that the ObjectDataSourceView uses to insert data. The default value is an empty string ("").The method that is identified by the InsertMethod property can be an instance method or a static (Shared in Visual Basic) method. If it is an instance method, the business object is created and destroyed each time the method specified by the InsertMethod property is called. You can handle the ObjectCreated event to work with the business object before the method specified by the InsertMethod property is called. You can also handle the ObjectDisposing event that is raised after the method specified by the InsertMethod property is called. (Dispose is called, only if the business object implements the IDisposable interface.) If the method is a static (Shared in Visual Basic) method, the business object is never created and you cannot handle these events.
If the business object that the ObjectDataSource object implements more than one method or function with the same name (method overloads), the data source control attempts to invoke the correct one according to a set of conditions, including the parameters in the InsertParameters collection. If the parameters in the InsertParameters collection do not match those of the method specified by the InsertMethod property signature, the data source throws an exception.
The value of the InsertMethod property is stored in view state.
For more information, see InsertMethod.
This section contains two code examples. The first code example demonstrates how to display filtered data using an ObjectDataSource control with a business object and a DetailsView control to insert data. The second code example provides an example of the middle-tier business object that is used in the first code example.
The following code example demonstrates how to use an ObjectDataSource control with a business object and a DetailsView control to insert data. The DetailsView initially displays a new NorthwindEmployee record, along with an automatically generated Insert button. After you enter data into the fields of the DetailsView control, click the Insert button. The InsertMethod property identifies which method performs the Insert operation.
In this code example, the UpdateEmployeeInfo method is used to perform an insert; however, it requires a NorthwindEmployee parameter to insert the data. For this reason, the collection of strings that the DetailsView control passes automatically is not sufficient. The NorthwindEmployeeInserting delegate is an ObjectDataSourceMethodEventHandler object that handles the Inserting event and enables you to manipulate the input parameters before the Insert operation proceeds. Because the UpdateEmployeeInfo method requires a NorthwindEmployee object as a parameter, one is created using the collection of strings and is added to the InputParameters collection using a parameter name (ne) that the method expects. You might perform steps like these when using an existing middle-tier object as a data source with types and methods that are not designed specifically for use with the ObjectDataSource control.
When the Insert operation is performed, the method that is identified by the InsertMethod property is called. If the Insert method of the object has a method signature that includes parameters, the InsertParameters collection must contain a parameter with names that match the method signature parameters for the Insert method to complete successfully.
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.JSL" Assembly="Samples.AspNet.JSL" %>
<%@ Import namespace="Samples.AspNet.JSL" %>
<%@ Page language="VJ#" %>
<Script runat="server">
private void NorthwindEmployeeInserting(Object source,
ObjectDataSourceMethodEventArgs e)
{
// The GridView control passes an array of strings in the parameters
// collection because that is the type it knows how to work with.
// However, the business object expects a custom type. Build it
// and add it to the parameters collection.
IDictionary paramsFromPage = e.get_InputParameters();
NorthwindEmployee ne = new NorthwindEmployee();
ne.set_FirstName(paramsFromPage.get_Item("FirstName").ToString());
ne.set_LastName (paramsFromPage.get_Item("LastName").ToString());
ne.set_Title(paramsFromPage.get_Item("Title").ToString());
ne.set_Courtesy(paramsFromPage.get_Item("Courtesy").ToString());
ne.set_Supervisor(Int32.Parse(paramsFromPage.
get_Item("Supervisor").ToString()));
paramsFromPage.Clear();
paramsFromPage.Add("ne", ne);
}
</Script>
<html>
<head>
<title>ObjectDataSource - VJ# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:detailsview
id="DetailsView1"
runat="server"
autogenerateinsertbutton="True"
datasourceid="ObjectDataSource1">
</asp:detailsview>
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
selectmethod="GetEmployee"
insertmethod="UpdateEmployeeInfo"
oninserting="NorthwindEmployeeInserting"
typename="Samples.AspNet.JSL.EmployeeLogic" >
<selectparameters>
<asp:parameter name="anID" defaultvalue="-1" />
</selectparameters>
</asp:objectdatasource>
</form>
</body>
</html>
The following code example provides an example of a middle-tier business object that the previous code example uses. The code example consists of two basic classes and an additional class:
-
The EmployeeLogic class is a stateless class, which encapsulates business logic.
-
The NorthwindEmployee class is a model class, which contains only the basic functionality that is required to load and persist data from the data tier.
-
An additional NorthwindDataException class is provided as a convenience.
For a complete working example, you must compile and use these classes. The UpdateEmployeeInfo method is not completely implemented, so you will not insert data into the Northwind Traders database when you experiment with this 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 you can perform on a NorthwindEmployee object.
//
public class EmployeeLogic
{
// Returns a collection of NorthwindEmployee objects.
public static ICollection GetAllEmployees() throws
NorthwindDataException, SqlException
{
ArrayList al = new ArrayList();
ConnectionStringSettings cts =
ConfigurationManager.get_ConnectionStrings().
get_Item("NorthwindConnection");
//ConfigurationSettings.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 id = row.get_Item("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;
} //GetAllEmployees
public static NorthwindEmployee GetEmployee(Object anId) throws
NorthwindDataException, SqlException
{
if (anId.Equals("-1") || anId.Equals(DBNull.Value)) {
return new NorthwindEmployee();
}
else {
return new NorthwindEmployee(anId);
}
} //GetEmployee
public static void UpdateEmployeeInfo(NorthwindEmployee ne) throws
NorthwindDataException
{
boolean retval = ne.Save();
if (!retval) {
throw new NorthwindDataException("UpdateEmployee failed.");
}
} //UpdateEmployeeInfo
public static void DeleteEmployee(NorthwindEmployee ne) throws
NorthwindDataException
{
boolean retval = ne.Delete();
if (!retval) {
throw new NorthwindDataException("DeleteEmployee failed.");
}
} //DeleteEmployee
// And so on...
} //EmployeeLogic
public class NorthwindEmployee
{
public NorthwindEmployee()
{
id = DBNull.Value;
lastName = "";
firstName = "";
title = "";
titleOfCourtesy = "";
reportsTo =-1;
} //NorthwindEmployee
public NorthwindEmployee(Object anId) throws
NorthwindDataException ,SqlException
{
this.id = anId;
SqlConnection conn = new SqlConnection(ConfigurationManager.
get_ConnectionStrings().get_Item("NorthwindConnection").get_ConnectionString());
SqlCommand sc = new SqlCommand(
" SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo "
+ " 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();
// Only loop 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.title = sdr.get_Item( "Title").ToString();
this.titleOfCourtesy = sdr.get_Item( "TitleOfCourtesy").
ToString();
if (!(sdr.IsDBNull(4))) {
this.reportsTo = sdr.GetInt32(4);
}
}
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.
throw exp;
}
}
} //NorthwindEmployee
private Object id;
/** @property
*/
public String get_EmpID()
{
return id.ToString();
} //get_EmpID
private String lastName;
/** @property
*/
public String get_LastName()
{
return lastName;
} //get_LastName
/** @property
*/
public void set_LastName (String value)
{
lastName = value;
} //set_LastName
private String firstName;
/** @property
*/
public String get_FirstName()
{
return firstName;
} //get_FirstName
/** @property
*/
public void set_FirstName (String value)
{
firstName = value;
} //set_FirstName
/** @property
*/
public String get_FullName()
{
return get_FirstName() + " " + get_LastName();
} //get_FullName
private String title;
/** @property
*/
public String get_Title()
{
return title;
} //get_Title
/** @property
*/
public void set_Title (String value)
{
title = value;
} //set_Title
private String titleOfCourtesy;
/** @property
*/
public String get_Courtesy()
{
return titleOfCourtesy;
} //get_Courtesy
/** @property
*/
public void set_Courtesy (String value)
{
titleOfCourtesy = value;
} //set_Courtesy
private int reportsTo;
/** @property
*/
public int get_Supervisor()
{
return reportsTo;
}//get_Supervisor
/** @property
*/
public void set_Supervisor (int value)
{
reportsTo = value;
} //set_Supervisor
public boolean Save()
{
// Implement persistence logic.
return true;
} //Save
public boolean Delete()
{
// Implement delete logic.
return true;
} //Delete
} //NorthwindEmployee
public class NorthwindDataException extends System.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.