ASP.NET: Tratar con los tipos de objetos como parámetros cuando se actualiza en ObjectDataSource

StackOverflow https://stackoverflow.com/questions/891959

Pregunta

? ¿Cómo modificar sus chicos digamos, por ejemplo, un FormView con una fuente de ObjectDataSource. El DataObjectTypeName es una clase que ya he marcado con un atributo DataObject. Ahora, quiero personalizar el proceso de actualización y añadir algunos datos personalizados al parámetro. ¿Qué necesitamos para hacerlo?

Ejemplo: Tengo una clase BLL el que vamos a llamarlo "ProductsBLL" y un "producto" clase de datos.

Declaro el siguiente control 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>

Dado que el método de actualización en la clase ProductsBLL acepta un objeto como un parámetro del producto. Ahora, antes de que la actualización se lleva a cabo, quiero añadir un conjunto de datos personalizados para el parámetro del producto. ¿Cómo puedo hacer eso?

¿Fue útil?

Solución

No estoy seguro exactamente lo que es su pregunta (que necesita para ser más específicos), pero el flujo general es el siguiente:

  • Su GridView está vinculado a un ObjectDataSource.

  • Su ObjectDataSource está vinculada a una capa lógica Biz través de la propiedad TypeName - Esta es la clase que se crea una instancia para realizar operaciones de datos. (Llaman ProductsBLL por ejemplo).

  • También utiliza una propiedad DataObjectTypeName que es el tipo de objeto que está siendo recuperado / modificada / borrada por el BLL. (Por ejemplo, Product)

  • Además, especifica los métodos de la BLL a llamar cuando se invoca una acción (UpdateMethod, SelectMethod, etc.) (por ejemplo, ProductsBLL.UpdateProducts, ProductsBLL.DeleteProducts)

  • Su objeto BLL a continuación, realiza operaciones personalizadas, tales como la lógica de validación de los datos recibidos desde el ObjectDataSource y llama a su capa de datos para llevar a cabo de la actualización / eliminación real de la base de datos. (Por ejemplo, ProductsDataLayer.UpdateProduct())

Si necesita más información, por favor editar su pregunta para ser más específico.

Editar (después de la edición en la pregunta original):


Modificar el parámetro Product antes de la actualización podría ser tan simple 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);
}

donde el ProductDL.UpdateProduct podría parecerse a:

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

Y, etcétera.

Otros consejos

En el caso de ObjectDataSource actualización, compruebe la colección e.InputParameters, sus productos objeto debe ser almacenada en e.InputParameters [0].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top