ASP.NET: التعامل مع أنواع الكائنات كمعلمات عند التحديث في ObjectDatasource

StackOverflow https://stackoverflow.com/questions/891959

سؤال

كيف يمكنك التحديث يا رفاق دعنا نقوله على سبيل المثال صورة شكلية مع مصدر 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].

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top