Datagrid:حساب متوسط أو مجموع العمود في تذييل الصفحة

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

سؤال

لدي datagrid الحصول على ملزمة dataset, و أريد أن عرض النتيجة في المتوسط في تذييل العمود بالسكان مع الاعداد الصحيحه.

الطريقة أعتقد هناك 2 طرق أفكر:

1."استخدام المصدر, لوك"
في القانون حيث أتصل DataGrid.DataBind(), استخدام DataTable.حساب (طريقة) (أو في حالتي DataSet.DataTable(0).حساب()).على سبيل المثال:

Dim strAverage = DataTable.Compute("Avg(ColumnName)", "")  

ولكن بمجرد أن يكون هذا ، كيف يمكنني أن أدخله في تذييل ؟

2."لا بد في المجد"
باستخدام DataGrid.ItemDataBound الحدث ، وحساب ما مجموعه تشغيل من كل ListItemType.البند ListItemType.AlternatingItem ، وأخيرا عرض في ListItemType.تذييل الصفحة.على سبيل المثال:

Select Case e.Item.ItemType
    Case ListItemType.Item, ListItemType.AlternatingItem
        runningTotal += CInt(e.Item.Cells(2).Text)
    Case ListItemType.Footer
        e.Item.Cells(2).Text = runningTotal/DataGrid.Items.Count
End Select

هذا خاطئ ، بالإضافة إلى أنني يجب أن تأكد من runningTotal هو إعادة تعيين على كل DataBind.

هل هناك طريقة أفضل ؟

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

المحلول

أنا لا أعرف إذا كان أي هي بالضرورة أفضل ، ولكن اثنين البديل طرق ليكون:

  1. يدويا تشغيل من خلال الجدول بمجرد ضرب تذييل حساب من على الشاشة النص
  2. يدويا استرداد البيانات و لا حساب على حدة من ربط

بالطبع, #2 نوع من إزاحة مزايا ربط البيانات (على افتراض أن ما تفعله).

نصائح أخرى

شكرا DannySmurf, أول إجابة جعلتني أرى معنى.(لماذا ننظر دائما على أن السحر الحل ؟ ).

للإشارة هنا ما انتهى به:(تحذير:VB أدناه ، قد لا تحتوي على ما يكفي من الفاصلة المنقوطة)

Case ListItemType.Footer
    e.Item.Cells(0).Text = "Average"
    For i As Integer = 3 To 8
        Dim runningTotal As Integer = 0
        For Each row As DataGridItem In DataGrid.Items
            If IsNumeric(row.Cells(i).Text) Then
                runningTotal += CInt(row.Cells(i).Text)
            End If
        Next
    e.Item.Cells(i).Text = Math.Round(runningTotal / DataGrid.Items.Count, 0)
    Next
End Select

كنت بحاجة إلى القيام بذلك عدة أعمدة (ومن 3 إلى 8) ، في نهاية المطاف لماذا كنت أبحث عن الحل السحري.

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