ObjectDataSourceView.InsertParameters Свойство

Определение

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

public:
 property System::Web::UI::WebControls::ParameterCollection ^ InsertParameters { System::Web::UI::WebControls::ParameterCollection ^ get(); };
public System.Web.UI.WebControls.ParameterCollection InsertParameters { get; }
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 определяет, какой метод выполняет Insert операцию.

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

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

<%@ 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 элементом управления в веб-сценариях без существенной перезаписи в фактическую бизнес-логику.

// 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 элемент управления автоматически объединяет все параметры, явно указанные в коллекции, с теми параметрами, которые предоставляются элементом управления с привязкой к данным. Для получения дополнительной информации см. InsertMethod.

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

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