ASP.NET: التعامل مع أنواع الكائنات كمعلمات عند التحديث في ObjectDatasource
-
23-08-2019 - |
سؤال
كيف يمكنك التحديث يا رفاق دعنا نقوله على سبيل المثال صورة شكلية مع مصدر ObjectDataSource. dataobjecttypename هو فئة قمت بها بالفعل بسمة DataObject. الآن، أريد تخصيص عملية التحديث وإضافة بعض البيانات المخصصة إلى المعلمة. ماذا نحتاج أن نفعل ذلك؟
مثال: لدي فئة Bll التي دعنا نسميها "productsll" وطبق البيانات "المنتج".
أعلن التحكم UnjectDASource التالي:
<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>
نظرا لأن طريقة التحديث في فئة ProcessBll تقبل كائن منتج كمعلمة. الآن، قبل إجراء التحديث، أريد إضافة بيانات مخصصة إلى معلمة المنتج. كيف أقوم بذلك؟
المحلول
لست متأكدا بالضبط ما هو سؤالك (يجب أن تكون أكثر تحديدا)، ولكن التدفق العام كما يلي:
يرتبط GridView الخاص بك ب ObjectDataSource.
يتم ربط ObjectDataSource بطبقة منطق BIZ عبر
TypeName
الخاصية - هذه هي الفئة التي سيتم إنشاء مثيل لها لأداء عمليات البيانات. (نسميهاProductsBLL
علي سبيل المثال).كما يستخدم أيضا
DataObjectTypeName
الممتلكات التي يتم استردادها / تحديث / محدث من قبل BLL. (قل،Product
)أيضا، يحدد الأساليب الموجودة في BLL للاتصال كلما تم استدعاء الإجراء (
UpdateMethod
,SelectMethod
, ، إلخ.) (قل،ProductsBLL.UpdateProducts
,ProductsBLL.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
)
وما إلى ذلك وهلم جرا.
نصائح أخرى
في حدث تحديث ObjectDatasource، تحقق من مجموعة E.INPUTPARAMETERS، يجب تخزين كائن المنتجات الخاصة بك في E.Inportameters [0].