2009-05-21 39 views
2

你們如何更新讓我們舉個例子,比如帶有ObjectDataSource源的FormView。 DataObjectTypeName是一個我已經用DataObject屬性標記的類。現在,我想定製更新過程並將一些自定義數據添加到參數中。我們需要做什麼?ASP.NET:在ObjectDataSource中更新對象類型時作爲參數處理

例如: 我有一個稱爲「ProductsBLL」的BLL類和一個數據類「Product」。

我聲明如下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> 

鑑於在ProductsBLL類的更新方法接受產品對象作爲參數。現在,在更新發生之前,我想將自定義數據添加到Product參數。我怎樣才能做到這一點?

回答

4

我不知道你的問題是什麼(你需要更具體的),但一般流程如下:

  • 你的GridView鏈接到一個ObjectDataSource。

  • 您的ObjectDataSource通過TypeName屬性鏈接到Biz邏輯層 - 這是將被實例化以執行數據操作的類。 (例如,稱其爲ProductsBLL)。

  • 它還使用DataObjectTypeName屬性,它是由BLL檢索/更新/刪除的對象的類型。 (比如說,Product

  • 而且,它指定調用的BLL方法,只要一個動作被調用(UpdateMethodSelectMethod等)(比方說,ProductsBLL.UpdateProducts,)

  • 你BLL對象,然後對從ObjectDataSource接收到的數據執行自定義操作(如驗證邏輯),並調用Datalayer從數據庫執行實際的更新/刪除操作。 (比如說,ProductsDataLayer.UpdateProduct()

如果您需要了解更多信息,請編輯你的問題更具體。

編輯(後編輯到原來的問題):


修改Product參數之前更新將是簡單的:

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

其中ProductDL.UpdateProduct可能樣子:

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

等等。

+0

編輯了這個問題。希望現在更具體和明確。 – jerbersoft 2009-05-21 09:22:30

2

在ObjectDataSource更新事件中,檢查e.InputParameters集合,您的Products對象應該存儲在e.InputParameters [0]中。

相關問題