ObjectDataSourceView.InsertParameters Propriedade

Definição

Obtém a coleção de parâmetros que contém os parâmetros usados pelo InsertMethod método.

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 de Propriedade

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

Exemplos

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

O exemplo de código seguinte demonstra como usar um ObjectDataSource controlo com um objeto de negócio e um DetailsView controlo para inserir dados. Inicialmente DetailsView apresenta um novo NorthwindEmployee registo, juntamente com um botão Inserir gerado automaticamente. Depois de inserir dados nos campos do DetailsView controlo, clique no botão Inserir . A InsertMethod propriedade identifica qual o método que executa a Insert operação.

Se clicar no botão Inserir , a Insert operação é realizada usando o método especificado pela InsertMethod propriedade e quaisquer parâmetros especificados na InsertParameters coleção. Neste exemplo de código, é especificado um parâmetro na InsertParameters coleção que corresponde ao ID do supervisor. Isto porque, embora o ID seja exibido na Fields coleção do DetailsView controlo como um BoundField objeto, será passado como uma string para o ObjectDataSource controlo. Ao adicioná-lo explicitamente à InsertParameters coleção com uma Type propriedade definida para o Int32 valor, será passado corretamente pelo ObjectDataSource para o método como um int, e não como string.

Quando a Insert operação é realizada, chama-se o método identificado pela InsertMethod propriedade. Se o Insert método do objeto tiver uma assinatura de método que inclua parâmetros, a InsertParameters coleção deve conter um parâmetro com nomes que correspondam aos parâmetros da assinatura do método para que o Insert processo seja concluído com sucesso.

<%@ 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 seguinte fornece uma implementação exemplar do Insert método que o exemplo de código anterior utiliza. O InsertNewEmployeeWrapper método é adicionado ao EmployeeLogic objeto de nível intermédio para permitir que o objeto funcione mais facilmente com o ObjectDataSource controlo em cenários Web, sem uma reescrita substancial da lógica de negócio 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

Observações

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 InsertMethod assinatura da propriedade. Ao trabalhar com controlos data-bound que fornecem parâmetros, como GridView e DetailsView, o controlo ObjectDataSource funde automaticamente quaisquer parâmetros explicitamente especificados na coleção com os parâmetros fornecidos pelo controlo data-bound. Para obter mais informações, veja InsertMethod.

Aplica-se a

Ver também