asp.net रथम डेटाग्रिड: फुटेज में स्तंभ के लिए औसत या योग की गणना करें




विषम संख्या का योग सूत्र (2)

मुझे नहीं पता कि या तो जरूरी है, लेकिन दो वैकल्पिक उपाय होंगे:

  1. एक बार जब आप पाद लेख को मारा और ऑन-स्क्रीन पाठ से गणना करते हैं तो तालिका के माध्यम से मैन्युअल रूप से चलाएं
  2. डेटा को मैन्युअल रूप से पुनर्प्राप्त करें और बंड से अलग से गणना करें

बेशक, # 2 तरह ऑफ़सेट्स डेटा बाइंडिंग के लाभ (यह मानते हुए कि आप क्या कर रहे हैं)

मेरे पास डेटाग्रिड एक डाटासेट के लिए बाध्य है, और मैं पूर्णांक के साथ आबादी वाले स्तंभ के लिए पाद लेख में औसत परिणाम प्रदर्शित करना चाहता हूं।

जिस तरह से मैं समझता हूं, वहां दो तरीकों से मैं सोच सकता हूं:

1. " स्रोत का उपयोग करें, ल्यूक"
कोड में जहां मैं DataGrid.DataBind () को बुला रहा हूं, DataTable.Compute () विधि का उपयोग करें ( या मेरे मामले में DataSet.DataTable (0) .Compute () )। उदाहरण के लिए:

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

लेकिन एक बार मेरे पास यह है, मैं इसे पाद लेख में कैसे सम्मिलित कर सकता हूं?

2. "महिमा के लिए बाध्य "
DataGrid.ItemDataBound घटना का उपयोग करना, और प्रत्येक ListItemType.Item और ListItemType.AlternatingItem से चल रहे कुल की गणना, अंत में ListItemType.Footer में प्रदर्शित। उदाहरण के लिए:

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

यह सिर्फ गलत महसूस करता है, प्लस मुझे यह सुनिश्चित करना होगा कि चलने वाला कुल प्रत्येक डाटाबिंड पर रीसेट होता है।

क्या कोई बेहतर तरीका है?


धन्यवाद डैनीसमुरफ , आपका पहला जवाब मुझे समझ में आया। ( हम हमेशा उस जादू समाधान की खोज क्यों करते हैं? )।

संदर्भ के लिए, यह है कि मैं क्या कर रहा हूं: ( चेतावनी: नीचे वीबी, पर्याप्त अर्धविराम नहीं हो सकता है )

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) के लिए करना था, आखिरकार मैं जादुई समाधान क्यों खोज रहा था