ObjectDataSource.InsertParameters Propriedade

Definição

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

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

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

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ó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, apresenta DetailsView caixas de texto onde pode inserir dados para 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 operação de inserção.

Se clicar no botão Inserir , a 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 Rows coleção do DetailsView controlo como objeto BoundField , é 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 uma Int32, e não como uma cadeia.

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 parâmetros com nomes que correspondem aos parâmetros da assinatura do método para que o Insert método seja concluído com sucesso.

Importante

Deve validar qualquer valor de parâmetro que receba do cliente. O tempo de execução simplesmente substitui o valor do parâmetro pela 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 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 fornecido na ObjectDataSource visão geral da classe 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.

Para executar o exemplo, deve ter a NorthwindEmployee classe fornecida na ObjectDataSource visão geral da classe. Este exemplo ilustra apenas como ligar o ObjectDataSource método a um objeto de negócio que obtém dados para um novo registo de base de dados usando parâmetros. O exemplo não adiciona registos à base de dados, porque o Save método da NorthwindEmployee classe não inclui código para atualizar a base 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

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 na InsertMethod assinatura da propriedade. Os nomes dos parâmetros são distintos de maiúsculas minúsculas. Ao trabalhar com controlos data-bound que fornecem parâmetros, como os GridView controlos e, DetailsView o controlo ObjectDataSource funde automaticamente quaisquer parâmetros explicitamente especificados na coleção com os parâmetros fornecidos pelo controlo data-bound. Isto é importante porque os controlos data-bound fornecem sempre os seus parâmetros como String tipos, e se a assinatura do método incluir tipos numéricos ou de data, deve incluir explicitamente um parâmetro na InsertParameters coleção com o tipo correto. Caso contrário, o controlo ObjectDataSource tenta lançar os parâmetros de acordo com o tipo definido pelos parâmetros na coleção. Para mais informações, consulte Utilização de Parâmetros com o Controlo ObjectDataSource.

A InsertParameters propriedade recupera a InsertParameters propriedade que está contida por o ObjectDataSourceView que está associada ObjectDataSource ao controlo.

Para mais informações sobre fusão de parâmetros, vida útil do objeto e resolução do método, veja InsertMethod.

Aplica-se a

Ver também