gpt4 book ai didi

ASP.NET:在 ObjectDataSource 中更新时将对象类型作为参数处理

转载 作者:行者123 更新时间:2023-12-04 18:48:49 25 4
gpt4 key购买 nike

你们如何更新带有 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 参数添加自定义数据。我怎样才能做到这一点?

最佳答案

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

  • 您的 GridView 已链接到 ObjectDataSource。

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

  • 它还使用 DataObjectTypeName 属性,该属性是 BLL 检索/更新/删除的对象类型。 (例如,产品)

  • 此外,它还指定每当调用操作时要调用的 BLL 中的方法(UpdateMethodSelectMethod 等)(例如, ProductsBLL.UpdateProductsProductsBLL.DeleteProducts)

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

还有,等等。

关于ASP.NET:在 ObjectDataSource 中更新时将对象类型作为参数处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/891959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com