【问题标题】:ASP.NET: Dealing with object types as parameters when updating in ObjectDataSourceASP.NET:在 ObjectDataSource 中更新时将对象类型作为参数处理
【发布时间】:2009-05-21 08:53:13
【问题描述】:

你们如何更新例如一个带有 ObjectDataSource 源的 FormView。 DataObjectTypeName 是一个我已经用 DataObject 属性标记的类。现在,我想自定义更新过程并在参数中添加一些自定义数据。我们需要做什么?

示例: 我有一个 BLL 类,我们称之为“ProductsBLL”和一个数据类“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 类中的 Update 方法接受 Product 对象作为参数。现在,在更新发生之前,我想向 Product 参数添加一个自定义数据。我该怎么做?

【问题讨论】:

    标签: asp.net objectdatasource formview


    【解决方案1】:

    我不确定你的问题到底是什么(你需要更具体),但大致流程如下:

    • 您的 GridView 已链接到 ObjectDataSource。

    • 您的 ObjectDataSource 通过 TypeName 属性链接到 Biz Logic 层 - 这是将被实例化以执行数据操作的类。 (例如叫它ProductsBLL)。

    • 它还使用 DataObjectTypeName 属性,这是 BLL 正在检索/更新/删除的对象类型。 (比如说Product

    • 1234563 /li>
    • 然后,您的 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
        )
    

    等等。

    【讨论】:

    • 但是如何在更新事件期间访问参数?
    【解决方案2】:

    在 ObjectDataSource 更新事件中,检查 e.InputParameters 集合,您的 Products 对象应该存储在 e.InputParameters[0] 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      相关资源
      最近更新 更多