Compartilhar via


ObjectDataSourceView.InsertParameters Propriedade

Definição

Obtém a coleção de parâmetros que contém os parâmetros usados pelo método 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

Valor da propriedade

ParameterCollection

Um ParameterCollection que contém os parâmetros usados pela propriedade InsertMethod.

Exemplos

Esta seção contém dois exemplos de código. O primeiro exemplo de código demonstra como exibir dados filtrados usando um ObjectDataSource controle com um objeto de negócios e um DetailsView controle para inserir dados. O segundo exemplo de código fornece um exemplo de implementação do Insert método usado no primeiro exemplo de código.

O exemplo de código a seguir demonstra como usar um ObjectDataSource controle com um objeto de negócios e um DetailsView controle para inserir dados. O DetailsView inicialmente exibe um novo NorthwindEmployee registro, juntamente com um botão Inserir gerado automaticamente. Depois de inserir dados nos campos do DetailsView controle, clique no botão Inserir . A InsertMethod propriedade identifica qual método executa a Insert operação.

Se você clicar no botão Inserir , a Insert operação será executada usando o método especificado pela InsertMethod propriedade e quaisquer parâmetros especificados na InsertParameters coleção. Neste exemplo de código, um parâmetro é especificado na InsertParameters coleção que corresponde à ID do supervisor. Isso ocorre porque, embora a ID seja exibida na Fields coleção para o DetailsView controle como um BoundField objeto, ela será passada como uma cadeia de caracteres para o ObjectDataSource controle. Ao adicioná-la explicitamente à InsertParameters coleção com uma Type propriedade definida como o Int32 valor, ela será passada corretamente pelo ObjectDataSource método como um int, não como string.

Quando a Insert operação é executada, o método identificado pela InsertMethod propriedade é chamado. Se o Insert método do objeto tiver uma assinatura de método que inclua parâmetros, a InsertParameters coleção deverá conter um parâmetro com nomes que correspondam aos parâmetros de assinatura do método para a Insert conclusão com êxito.

<%@ 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>

O exemplo de código a seguir fornece uma implementação de exemplo do Insert método que o exemplo de código anterior usa. O InsertNewEmployeeWrapper método é adicionado ao EmployeeLogic objeto de camada intermediária para permitir que o objeto funcione mais facilmente com o ObjectDataSource controle em cenários da Web, sem uma reescrita substancial para a lógica de negócios real.

// 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

Comentários

Os nomes e tipos dos parâmetros contidos na InsertParameters coleção devem corresponder aos nomes e tipos dos parâmetros que estão no método especificado pela assinatura da InsertMethod propriedade. Ao trabalhar com controles associados a dados que fornecem parâmetros, como GridView e DetailsView, o ObjectDataSource controle mescla automaticamente todos os parâmetros especificados explicitamente na coleção com os parâmetros fornecidos pelo controle associado a dados. Para obter mais informações, consulte InsertMethod.

Aplica-se a

Confira também