الخلايا المحسوبة في GridGroupFooterItem الخاصة بـ Telerik RadGrid

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

  •  20-09-2019
  •  | 
  •  

سؤال

أقوم بملء Telerik RadGrid ببيانات من DataTable (System.Data.DataTable).نظرًا لأنني أدعم تطبيق شخص آخر، فلا يمكنني استخدام أي مصدر بيانات آخر أو عنصر تحكم في العرض.

في شبكتي لدي ثلاثة أعمدة:لنفترض أنها عناصر واجهة مستخدم تم إنتاجها (العمود A)، وعناصر واجهة مستخدم معيبة (العمود B) ونسبة الخطأ (العمود C).يوفر لي استعلام قاعدة البيانات هذه الأشياء ويقوم بالحساب C = B / A.

لدي صف الإجماليات (Telerik GridFooterItem) في أسفل الشبكة.في العمودين A وB، يقوم Telerik بحساب إجماليات تلك الأعمدة بالنسبة لي.لا يمكننا حساب القيمة الصحيحة لـ "إجمالي" العمود C من العمود C وحده:علينا ملؤها بـ (مجموع B) / (مجموع A).

لقد تمكنت من القيام بذلك عن طريق التعامل مع DataBound حدث RadGrid وملء الخلايا يدويًا في التذييل.(كان علي أن ألتقط GridFooterItem في ال ItemCreated الحدث، ثم ضع القيم فيه في DataBound الحدث، بعد أن قام تلقائيًا بحساب إجماليات A وB بالنسبة لي.) يبدو هذا أمرًا مبتكرًا للغاية - ربما هناك طريقة أفضل...؟

على أية حال، الشيء المهم هو هذا:

تم تقسيم شبكتي إلى مجموعات لذا أحتاج أيضًا إلى ملء العمود C في GridGroupFooterItemس.لا يمكنني تشغيل أسلوبي المتسلل في هذه الحالة:أجد خلية التذييل التي أريدها myGridFooterItem["WidgetsProduced"], ، لكن لا يمكنني الحصول على خلايا تذييل المجموعة myGridGroupFooterItem["WidgetsProduced"] - إنه ليس مجرد قاموس.

لقد حاولت استخدام myGridGroupFooterItem.Cells[], ولكن هذا TableCellCollection يحتوي على بضع خلايا أكثر مما كنت أتوقع، لذا فإن الوصول إليها عن طريق فهرس عدد صحيح يبدو أمرًا صعبًا بعض الشيء (خاصة وأن هذا تقرير محدد من قبل المستخدم، لذا قد تكون الأعمدة بأي ترتيب).

لذا:كيف يمكنني ملء هذه الخلايا بحسابي؟

هل كانت مفيدة؟

المحلول

يبدو أن حدث DataBound الخاص بك يبدو شيئا

grd_ItemDataBound(object sender,GridItemEventArgs e)
{
//catch the footer element
if(e.Item.ItemType==GridItemType.GroupFooter)
{
    (e.Item.FindControl("yourTextBox") as TextBox).Text = your calculated value
}


}

نصائح أخرى

قمت بفحص ما إذا كان مفهرس اسم فريد من نوعه يعمل مع إصدار Q2 2009 و Q3 2009 من Radgrid ل ASP.NET AJAX ويعمل على جهازي. تحقق من الإصدار الخاص بك واسأل المزيد من المساعدة باستخدام منتديات التيليريك إذا لزم الأمر.

ديك.

جرب هذا

في صفحة ASPX:

<telerik:GridBoundColumn Aggregate="Sum" DataField="Price" DataFormatString="{0:C}" EmptyDataText="0" FooterText="Total :" HeaderText="Price" UniqueName="Price"> ...

(أو)

في الرمز وراء الصفحة:

Private Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound       
    Dim Item As GridDataItem
    Dim value as Double
    Select Case (e.Item.ItemType)
    Case Telerik.Web.UI.GridItemType.AlternatingItem, Telerik.Web.UI.GridItemType.EditItem,Telerik.Web.UI.GridItemType.Item,Telerik.Web.UI.GridItemType.SelectedItem

        Item = e.Item
    '------ Calculate Total  amount -----------
        Item("TotalPayment").Text = CDbl(Item("TotalPayment").Text) 
        value += CDec(Item("TotalPayment").Text)

    Case Telerik.Web.UI.GridItemType.Footer
        '------ Display the total  amount in Footer ------
        Dim footerItem As GridFooterItem = e.Item
        If Not RadGrid1.Items.Count = 0 Then footerItem("TotalPayment").Text = "Total :" + value
    End Select
End Sub

حسنًا، إذا كنت تستخدم صيغة مخصصة لحساب النتائج بدلاً من المجاميع القياسية مثل المجموع والمتوسط ​​وما إلى ذلك، فربما يتعين عليك الاعتماد على المنطق الخاص بك.يجب أن تكون الخلايا الموجودة في تذييلات المجموعة قابلة للفهرسة باسم فريد - أتذكر أن هذا لم يكن مدعومًا في إصدارات Telerik ASP.NET Grid السابقة ولكن تمت إضافته في الإصدارات الأحدث - Q2 أو Q3 2009.

قضيب

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