ASP.NET: Faire face à des types d'objets en tant que paramètres lors de la mise à jour dans ObjectDataSource

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

Question

Comment les gars ne vous mettez à jour, disons par exemple un FormView avec une source ObjectDataSource. Le DataObjectTypeName est une classe que je l'ai déjà marqué avec un attribut DataObject. Maintenant, je veux personnaliser le processus de mise à jour et ajouter des données personnalisées au paramètre. Que devons-nous faire?

Exemple: J'ai une classe qui BLL appelons-le « produit » « ProductsBLL » et une classe de données.

Je déclare le contrôle ObjectDataSource suivant:

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

Étant donné que la méthode de mise à jour dans la classe ProductsBLL accepte un objet produit en tant que paramètre. Maintenant, avant la mise à jour a lieu, je veux ajouter des données personnalisées au paramètre de produit. Comment puis-je faire?

Était-ce utile?

La solution

Je ne sais pas exactement ce que votre question est (vous devez être plus précis), mais le flux général est le suivant:

  • Votre GridView est lié à un ObjectDataSource.

  • Votre ObjectDataSource est liée à une couche logique Biz via la propriété TypeName - C'est la classe qui sera instancié pour effectuer des opérations de données. (Appeler ProductsBLL par exemple).

  • Il utilise également une propriété DataObjectTypeName qui est le type d'objet récupéré / mise à jour / supprimé par le BLL. (Par exemple, Product)

  • En outre, il précise les méthodes du BLL pour appeler chaque fois qu'une action est appelée (UpdateMethod, SelectMethod, etc.) (par exemple, ProductsBLL.UpdateProducts, ProductsBLL.DeleteProducts)

  • Votre objet BLL effectue ensuite des opérations personnalisées telles que la logique de validation sur les données reçues du ObjectDataSource et appelle votre dataLayer pour effectuer la updation / suppression réelle de la base de données. (Par exemple, ProductsDataLayer.UpdateProduct())

Si vous avez besoin de plus amples informations, s'il vous plaît modifier votre question pour être plus précis.

Modifier (après modification à la question d'origine):


Modification du paramètre Product avant la mise à jour serait aussi simple que:

// 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);
}

où la ProductDL.UpdateProduct peut ressembler à:

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

Et ainsi de suite.

Autres conseils

En cas de mise à jour ObjectDataSource, vérifiez la collection e.InputParameters, votre objet Les produits doivent être stockés dans e.InputParameters [0].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top