ObjectDataSource.InsertParameters Свойство

Определение

Получает коллекцию параметров, содержащую параметры, используемые свойством InsertMethod.

public:
 property System::Web::UI::WebControls::ParameterCollection ^ InsertParameters { System::Web::UI::WebControls::ParameterCollection ^ get(); };
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.ParameterCollection InsertParameters { get; }
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
member this.InsertParameters : System.Web.UI.WebControls.ParameterCollection
Public ReadOnly Property InsertParameters As ParameterCollection

Значение свойства

ParameterCollection

Объект ParameterCollection, содержащий параметры, используемые методом, заданным свойством InsertMethod.

Атрибуты

Примеры

Этот раздел содержит два примера кода. В первом примере кода показано, как использовать ObjectDataSource объект с бизнес-объектом и элементом DetailsView управления для вставки данных. Второй пример кода содержит пример реализации Insert метода, который используется в первом примере кода.

В следующем примере кода показано, как использовать ObjectDataSource элемент управления с бизнес-объектом и элементом DetailsView управления для вставки данных. Изначально отображаются текстовые поля, DetailsView в которых можно ввести данные для новой NorthwindEmployee записи вместе с автоматически созданной кнопкой "Вставить ". После ввода данных в поля DetailsView элемента управления нажмите кнопку "Вставить ". Свойство InsertMethod определяет, какой метод выполняет операцию вставки.

Если нажать кнопку "Вставить ", операция выполняется с помощью метода, указанного InsertMethod свойством, и всех параметров, указанных в InsertParameters коллекции. В этом примере кода в коллекции указывается InsertParameters один параметр, соответствующий идентификатору руководителя. Это связано с тем, что, несмотря на то, что идентификатор отображается в коллекции элемента DetailsView управления в Rows виде BoundField объекта, он передается в элемент управления в виде строкиObjectDataSource. Путем явного добавления его в коллекцию InsertParameters со свойством Type , установленным в Int32 значение, метод будет правильно передан методом ObjectDataSource в виде Int32строки, а не в виде строки.

При выполнении Insert операции вызывается метод, идентифицируемый InsertMethod свойством. Insert Если метод объекта имеет сигнатуру метода, которая включает параметры, InsertParameters коллекция должна содержать параметры, имена которых соответствуют параметрам сигнатуры метода для успешного Insert завершения метода.

Важно!

Необходимо проверить любое значение параметра, полученное от клиента. Среда выполнения просто заменяет значение параметра свойством InsertMethod .

<%@ 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">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          autogeneraterows="false"
          datasourceid="ObjectDataSource1"
          defaultmode="Insert" >
          <fields>
            <asp:BoundField headertext="FirstName" datafield="FirstName" />
            <asp:BoundField headertext="LastName"   datafield="LastName" />
            <asp:BoundField headertext="Title"      datafield="Title" />
            <asp:BoundField headertext="Courtesy"   datafield="Courtesy" />
            <asp:BoundField headertext="Supervisor" datafield="Supervisor" />
          </fields>
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="InsertNewEmployeeWrapper"
          typename="Samples.AspNet.CS.EmployeeLogic" >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
          <insertparameters>
            <asp:parameter name="Supervisor" type="Int32" />
          </insertparameters>
        </asp:objectdatasource>

    </form>
  </body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ Import namespace="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - VB Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          autogeneraterows="false"
          datasourceid="ObjectDataSource1"
          defaultmode="Insert" >
          <fields>
            <asp:BoundField headertext="FirstName" datafield="FirstName" />
            <asp:BoundField headertext="LastName"   datafield="LastName" />
            <asp:BoundField headertext="Title"      datafield="Title" />
            <asp:BoundField headertext="Courtesy"   datafield="Courtesy" />
            <asp:BoundField headertext="Supervisor" datafield="Supervisor" />
          </fields>
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="InsertNewEmployeeWrapper"
          typename="Samples.AspNet.VB.EmployeeLogic" >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
          <insertparameters>
            <asp:parameter name="Supervisor" type="Int32" />
          </insertparameters>
        </asp:objectdatasource>

    </form>
  </body>
</html>

В следующем примере кода представлен пример реализации Insert метода, который используется в предыдущем примере кода. Метод InsertNewEmployeeWrapper добавляется к объекту EmployeeLogic среднего уровня, который предоставляется в ObjectDataSource обзоре класса, чтобы позволить объекту работать более легко с ObjectDataSource элементом управления в веб-сценариях без существенной перезаписи в фактической бизнес-логике.

Чтобы запустить пример, необходимо иметь NorthwindEmployee класс, предоставленный в обзоре ObjectDataSource класса. В этом примере показано, как подключиться ObjectDataSource к методу бизнес-объекта, который получает данные для новой записи базы данных с помощью параметров. В этом примере записи не добавляются в базу данных, так как Save метод NorthwindEmployee класса не содержит код для обновления базы данных.

// This InsertNewEmployeeWrapper method is a wrapper method that enables
// the use of ObjectDataSource and InsertParameters, without
// substantially rewriting the true implementation for the NorthwindEmployee
// or the EmployeeLogic objects.
//
// The parameters to the method must be named the same as the
// DataControlFields used by the GridView or DetailsView controls.
public static void InsertNewEmployeeWrapper (string FirstName,
                                             string LastName,
                                             string Title,
                                             string Courtesy,
                                             int    Supervisor)
{
  // Build the NorthwindEmployee object and
  // call the true  implementation.
  NorthwindEmployee tempEmployee = new NorthwindEmployee();

  tempEmployee.FirstName  = FirstName;
  tempEmployee.LastName   = LastName;
  tempEmployee.Title      = Title;
  tempEmployee.Courtesy   = Courtesy;
  tempEmployee.Supervisor = Supervisor;

  // Call the true implementation.
  InsertNewEmployee(tempEmployee);
}

public static void InsertNewEmployee(NorthwindEmployee ne) {
  bool retval = ne.Save();
  if (! retval) { throw new NorthwindDataException("InsertNewEmployee failed."); }
}
' This InsertNewEmployeeWrapper method is a wrapper method that enables
' the use of ObjectDataSource and InsertParameters, without
' substantially rewriting the true implementation for the NorthwindEmployee
' or the EmployeeLogic objects.
'
' The parameters to the method must be named the same as the
' DataControlFields used by the GridView or DetailsView controls.
Public Shared Sub InsertNewEmployeeWrapper(FirstName As String, LastName As String, Title As String, Courtesy As String, Supervisor As Integer)
   ' Build the NorthwindEmployee object and
   ' call the true  implementation.
   Dim tempEmployee As New NorthwindEmployee()

   tempEmployee.FirstName = FirstName
   tempEmployee.LastName = LastName
   tempEmployee.Title = Title
   tempEmployee.Courtesy = Courtesy
   tempEmployee.Supervisor = Supervisor

   ' Call the true implementation.
   InsertNewEmployee(tempEmployee)
End Sub


Public Shared Sub InsertNewEmployee(ne As NorthwindEmployee)
   Dim retval As Boolean = ne.Save()
   If Not retval Then
      Throw New NorthwindDataException("InsertNewEmployee failed.")
   End If
End Sub

Комментарии

Имена и типы параметров, содержащихся в InsertParameters коллекции, должны соответствовать именам и типам параметров, которые находятся в сигнатуре InsertMethod свойства. Имена параметров чувствительны к регистру. При работе с элементами управления с привязкой к данными, предоставляющими параметры, такие как GridView и DetailsView элементы управления, элемент управления автоматически объединяет все параметры, ObjectDataSource явно указанные в коллекции, с параметрами, предоставляемыми элементом управления с привязкой к данным. Это важно, так как элементы управления с привязкой к данным всегда предоставляют параметры в виде String типов, а если сигнатура метода включает числовые или типы дат, необходимо явно включить параметр в коллекцию InsertParameters с правильным типом. ObjectDataSource В противном случае элемент управления пытается привести параметры в соответствии с типом, определенными параметрами в коллекции. Дополнительные сведения см . в разделе "Использование параметров" с элементом управления ObjectDataSource.

Свойство InsertParameters извлекает InsertParameters свойство, содержащееся ObjectDataSourceView в элементе ObjectDataSource управления.

Дополнительные сведения о слиянии параметров, времени существования объекта и разрешении методов см. в разделе InsertMethod.

Применяется к

См. также раздел