2009-05-21 3 views
2

Comment les utilisateurs mettent-ils à jour disons par exemple un FormView avec une source ObjectDataSource. DataObjectTypeName est une classe que j'ai déjà marquée avec un attribut DataObject. Maintenant, je veux personnaliser le processus de mise à jour et ajouter quelques données personnalisées au paramètre. De quoi avons-nous besoin?ASP.NET: Traitement des types d'objet en tant que paramètres lors de la mise à jour dans ObjectDataSource

Exemple: J'ai une classe BLL que nous appellerons "ProductsBLL" et une classe de données "Product".

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, je souhaite ajouter une donnée personnalisée au paramètre Product. Comment puis je faire ça?

Répondre

4

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 objet ObjectDataSource est lié à une couche logique de Biz via la propriété TypeName - Il s'agit de la classe qui sera instanciée pour effectuer des opérations de données. (appelez le ProductsBLL par exemple).

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

  • , il spécifie également les méthodes du BLL pour appeler chaque fois qu'une action est appelée (UpdateMethod, SelectMethod, etc.) (par exemple, ProductsBLL.UpdateProducts,)

  • Votre objet BLL puis effectue des opérations personnalisées telles que la logique de validation sur les données reçues de ObjectDataSource et appelle votre Datalayer pour effectuer la mise à jour/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):


La 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ù pourrait regarder la ProductDL.UpdateProductcomme:

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

Et ainsi de suite.

+0

a édité la question. j'espère que c'est plus précis et clair maintenant. – jerbersoft

+0

mais comment puis-je accéder aux paramètres pendant l'événement de mise à jour? – jerbersoft

2

Dans l'événement de mise à jour ObjectDataSource, vérifiez la collection e.InputParameters, votre objet Products doit être stocké dans e.InputParameters [0].

Questions connexes