Pergunta

Como vocês digamos atualização Vamos por exemplo, um FormView com uma fonte ObjectDataSource. O DataObjectTypeName é uma classe que já marcado com um atributo DataObject. Agora, eu quero personalizar o processo de atualização e adicionar alguns dados personalizados para o parâmetro. O que precisamos para fazê-lo?

Exemplo: Eu tenho uma classe BLL que vamos chamá-lo "ProductsBLL" e uma classe de dados "Produto".

Eu declaro o seguinte controle ObjectDataSource:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
DataObjectTypeName="Product" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetProduct" TypeName="Assembly.ProductsBLL" 
UpdateMethod="UpdateProduct">
  <UpdateParameters>
    <asp:Parameter Name="product" Type="Object" />
  </UpdateParameters>
  <SelectParameters>
    <asp:QueryStringParameter Name="productID" QueryStringField="ProdID" Type="Int32" />
  </SelectParameters>
</asp:ObjectDataSource>

Tendo em conta que o método Update na classe ProductsBLL aceita um objeto de Produtos como um parâmetro. Agora, antes que a atualização ocorre, eu quero adicionar dados personalizados para o parâmetro de Produto. Como posso fazer isso?

Foi útil?

Solução

Eu não sei exatamente o que sua pergunta é (você precisa para ser mais específico), mas o fluxo geral é o seguinte:

  • O seu GridView está vinculado a um ObjectDataSource.

  • O seu ObjectDataSource está ligada a uma camada Biz Logic através da propriedade TypeName - Esta é a classe que será instanciado para a realização de operações de dados. (Chamemos-lhe ProductsBLL por exemplo).

  • Ele também usa uma propriedade DataObjectTypeName que é o tipo de objeto que está sendo recuperada / atualizado / excluído pelo BLL. (Digamos, Product)

  • Além disso, especifica os métodos na BLL para chamar sempre que uma ação é invocado (UpdateMethod, SelectMethod, etc.) (digamos, ProductsBLL.UpdateProducts, ProductsBLL.DeleteProducts)

  • Seu objeto BLL em seguida, executa operações personalizadas, tais como lógica de validação dos dados recebidos do ObjectDataSource e chama seu DataLayer para executar o real updation / exclusão do banco de dados. (Digamos, ProductsDataLayer.UpdateProduct())

Se precisar de mais informações, por favor edite sua pergunta para ser mais específico.

Editar (depois de editar a pergunta original):


Modificar o parâmetro Product antes atualização seria tão simples como:

// In Biz Logic Layer.
public int UpdateProduct(Product p)
{
  // Modify the ProductName and the Price properties of this Product.
  p.ProductName = "Product " + p.ProductName;
  p.Price = 0.95 * p.Price;

  // Call DataLayer.
  return ProductDL.UpdateProduct(p.ID, p.ProductName, p.Quantity, p.Price);
}

onde o ProductDL.UpdateProduct pode olhar como:

public int UpdateProduct
  (
    string productID,
    string productName,
    int productQty,
    float productPrice
    )

E, assim por diante.

Outras dicas

No caso ObjectDataSource atualização, verifique a coleção e.InputParameters, seu objeto de produtos devem ser armazenados em e.InputParameters [0].

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top