ASP.NET: Der Umgang mit Objekttypen als Parameter, wenn in Object Aktualisierung
-
23-08-2019 - |
Frage
Wie aktualisieren ihr lassen Sie sich zum Beispiel sagen, ein Formview mit einer Object Quelle. Die DataObjectTypeName ist eine Klasse, die ich bereits mit einem Datenobjekt-Attribute gekennzeichnet. Nun, ich möchte den Update-Prozess anpassen und einige benutzerdefinierte Daten an den Parameter hinzuzufügen. Was müssen wir tun?
Beispiel: Ich habe eine BLL-Klasse, die es uns nennen wir „ProductsBLL“ und eine Datenklasse „Produkt“.
Ich erkläre die folgende Object Kontrolle:
<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>
Da die Update-Methode in der ProductsBLL Klasse ein Product-Objekt als Parameter akzeptiert. Nun, bevor die Aktualisierung stattfindet, mag ich ein benutzerdefinierten Daten an den Produktparameter hinzuzufügen. Wie kann ich das tun?
Lösung
Ich bin nicht sicher genau das, was Ihre Frage ist (Sie müssen präziser sein), aber der allgemeine Ablauf ist wie folgt:
-
Ihre Gridview mit einem Object verknüpft.
-
Ihre Object zu einer Biz Logikschicht über die
TypeName
Eigenschaft verknüpft sind - Dies ist die Klasse, die für die Durchführung von Datenoperationen instanziiert werden. (Nennen wir es zum BeispielProductsBLL
). -
Es verwendet auch eine
DataObjectTypeName
Eigenschaft, die die Art des Gegenstandes wird abgerufen / aktualisiert / von der BLL gelöscht. (Sagen wir,Product
) -
Außerdem ist es die Methoden in der BLL gibt zu rufen, wenn eine Aktion aufgerufen wird (
UpdateMethod
,SelectMethod
, etc.) (sagen wir,ProductsBLL.UpdateProducts
,ProductsBLL.DeleteProducts
) -
Ihr BLL Objekt führt dann benutzerdefinierte Operationen wie Validierungslogik auf den Daten aus dem Object empfangen und ruft Ihre Datalayer die tatsächliche updation / Löschung aus der Datenbank auszuführen. (Sagen wir,
ProductsDataLayer.UpdateProduct()
)
Wenn Sie weitere Informationen benötigen, können Sie Ihre Frage bearbeiten um genauer sein.
Bearbeiten (nach Bearbeitung auf ursprüngliche Frage):
Ändern des Product
Parameter vor der Aktualisierung würde so einfach sein wie:
// 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);
}
, wo die ProductDL.UpdateProduct
Macht wie folgt aussehen:
public int UpdateProduct
(
string productID,
string productName,
int productQty,
float productPrice
)
Und so weiter.
Andere Tipps
In der Object Aktualisierung Ereignis, überprüfen Sie die e.InputParameters Sammlung, Ihre Produkte Objekt sollte in e.InputParameters gespeichert werden [0].