当前位置: 代码迷 >> .NET组件控件 >> PivotGridControl数据汇总有关问题
  详细解决方案

PivotGridControl数据汇总有关问题

热度:4737   发布时间:2013-02-25 00:00:00.0
PivotGridControl数据汇总问题
.

希望实现Cell和GrandTotal中的B/A的值等于B/A*100%
用绑定列,目前没有实现该功能,请高手指教 

------解决方案--------------------------------------------------------
B/A*100% 不还是一样的值吗?  你是不是想把值转换成20%的形式? 还是转换成0.2的形式?
------解决方案--------------------------------------------------------
我建议你最好还是在数据源上做处理,计算好了在绑定到B/A列上。
------解决方案--------------------------------------------------------
结果是百分数,我是在数据源做的出来
ROUND(CAST(FOT AS FLOAT)/CAST(FP AS FLOAT),2) as Rate

这问题出来了,数据汇总时(Cell和GrandTotal)将所有列相加了,将SummaryType改为Average
将解决做平均处理也不满足要求

需要的结果是B/A列都是=B/A的结果(B1+B2+B3)/(A1+A2+A3),不是要自动将每列的结果做平均(B1/A1+B2/A2+B3/A3)/3

------解决方案--------------------------------------------------------
引用:
需要的结果是B/A列都是=B/A的结果(B1+B2+B3)/(A1+A2……


如果是自带几种汇总不能满足你要求的话,你可以在GridView事件中自定义某列的计算方法

        private void GridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e)
        {
           if((e.Item as GridColumnSummaryItem).FieldName == "B/A") 
               e.TotalValue = "具体的求值方法:(B1+B2+B3)/(A1+A2+A3)";

        }







------解决方案--------------------------------------------------------
@zhlin118
我这是用的
pivotGridControl控件,没有CustomSummaryCalculate事件
------解决方案--------------------------------------------------------
哦,我的控件版本可能太老了,所以没有找到你这个控件,你用的几点几的版本?
------解决方案--------------------------------------------------------
10.2.3
------解决方案--------------------------------------------------------
private void pivotGridControl1_CustomCellValue(object sender, DevExpress.XtraPivotGrid.PivotCellValueEventArgs e)
        {
            if (e.DataField.FieldName.Equals("MLL"))
            {
                try
                {
                    decimal CB = (decimal)((DevExpress.XtraPivotGrid.PivotGridControl)sender).Cells.GetCellInfo(e.ColumnIndex - 2, e.RowIndex).Value;
                    decimal MLE = (decimal)((DevExpress.XtraPivotGrid.PivotGridControl)sender).Cells.GetCellInfo(e.ColumnIndex - 1, e.RowIndex).Value;
                    if ((CB + MLE) != 0)
                    {
                        e.Value = MLE / (CB + MLE);
                    }
  相关解决方案