Compartilhar via


ObjectDataSource.InsertParameters Propriedade

Definição

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

Valor da propriedade

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

Atributos

Exemplos

Esta seção contém dois exemplos de código. O primeiro exemplo de código demonstra como usar um ObjectDataSource objeto 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. Inicialmente, o exibe caixas DetailsView de texto nas quais você pode inserir dados para 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 operação de inserção.

Se você clicar no botão Inserir , a operação será executada usando o método especificado pela propriedade e todos os InsertMethod 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 Rows coleção para o DetailsView controle como um BoundField objeto, ela é 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 para o ObjectDataSource método como um Int32, não como uma cadeia de caracteres.

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 parâmetros que tenham nomes que correspondam aos parâmetros de assinatura do método para que o Insert método seja concluído com êxito.

Importante

Você deve validar qualquer valor de parâmetro recebido do cliente. O runtime simplesmente substitui o valor do parâmetro na InsertMethod propriedade .

<%@ 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 um exemplo de implementação do Insert método que o exemplo de código anterior usa. O InsertNewEmployeeWrapper método é adicionado ao EmployeeLogic objeto de camada intermediária fornecido na visão geral da ObjectDataSource classe 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.

Para executar o exemplo, você deve ter a NorthwindEmployee classe fornecida na visão geral da ObjectDataSource classe. Este exemplo ilustra apenas como conectar o ObjectDataSource a um método de objeto de negócios que obtém dados de um novo registro de banco de dados usando parâmetros. O exemplo não adiciona registros ao banco de dados, pois o Save método da NorthwindEmployee classe não inclui código para atualizar o banco de dados.

// 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 na assinatura da InsertMethod propriedade. Os nomes dos parâmetros diferenciam maiúsculas de minúsculas. Ao trabalhar com controles associados a dados que fornecem parâmetros, como os GridView controles 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. Isso é importante porque os controles associados a dados sempre fornecem seus parâmetros como String tipos e, se a assinatura do método incluir tipos numéricos ou de data, você deverá incluir explicitamente um parâmetro na InsertParameters coleção com o tipo correto. Caso contrário, o ObjectDataSource controle tentará converter os parâmetros de acordo com o tipo definido pelos parâmetros na coleção. Para obter mais informações, consulte Usando parâmetros com o controle ObjectDataSource.

A InsertParameters propriedade recupera a InsertParameters propriedade contida pelo ObjectDataSourceView associado ao ObjectDataSource controle .

Para obter mais informações sobre mesclagem de parâmetros, tempo de vida do objeto e resolução de método, consulte InsertMethod.

Aplica-se a

Confira também