ObjectDataSource.InsertParameters Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.