Пользовательская сумма управления сеткой devexpress в указанных столбцах

Я пытаюсь суммировать значения некоторых столбцов с помощью выбора ячеек (затрагиваются 3 столбца). Это работает, но значения суммы дерева всегда одинаковы для всех трех столбцов.

Я пытаюсь это:

Private Sub gvIktato_CustomSummaryCalculate(ByVal sender As Object, ByVal e As DevExpress.Data.CustomSummaryEventArgs) Handles gvIktato.CustomSummaryCalculate
        Dim View As GridView = CType(sender, GridView)
        If e.SummaryProcess = CustomSummaryProcess.Calculate Then
            If View.IsCellSelected(e.RowHandle, gvIktato.Columns("NETTO")) Then e.TotalValue = Convert.ToDecimal(e.TotalValue) + Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, "NETTO"))
            If View.IsCellSelected(e.RowHandle, gvIktato.Columns("BRUTTO")) Then e.TotalValue = Convert.ToDecimal(e.TotalValue) + Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, "BRUTTO"))
            If View.IsCellSelected(e.RowHandle, gvIktato.Columns("SKONTO_OSSZEG")) Then e.TotalValue = Convert.ToDecimal(e.TotalValue) + Convert.ToDecimal(View.GetRowCellValue(e.RowHandle, "SKONTO_OSSZEG"))
        End If
    End Sub

Как мне переписать код, чтобы получить правильные значения суммы для каждого столбца?

Я знаю, я должен как-то различать столбцы, но как?

Спасибо.


person derstauner    schedule 27.07.2014    source источник


Ответы (1)


Вам необходимо использовать свойство CustomSummaryEventArgs.Item.
Вот пример:

Private Sub gvIktato_CustomSummaryCalculate(ByVal sender As Object, ByVal e As DevExpress.Data.CustomSummaryEventArgs) Handles gvIktato.CustomSummaryCalculate

    Dim item As GridSummaryItem = TryCast(e.Item, GridSummaryItem)

    If item Is Nothing Then
        Exit Sub
    End If

    Dim View As GridView = CType(sender, GridView)

    Dim fieldName As String = item.FieldName

    Select Case fieldName
        Case "NETTO", "BRUTTO", "SKONTO_OSSZEG"
            If e.SummaryProcess = CustomSummaryProcess.Calculate Then
                If View.IsCellSelected(e.RowHandle, View.Columns(fieldName)) Then
                    e.TotalValue = Convert.ToDecimal(e.TotalValue) + Convert.ToDecimal(e.FieldValue)
                End If
            End If
    End Select
End Sub
person nempoBu4    schedule 28.07.2014