whpengwei 发表于 2013-1-28 15:55:00

MultiRow 合计行问题

版主你好,我在使用MultiRow 合计的时候碰到了个问题
我的 数量吨数的数据是 3位小数,在设置单元格样式的时候2位小数(客户要求),最后一行有个合计行,也是2位小数,但是问题是,最后的合计他计算出来的数据是按我的源数据计算后,保留的2位小数,不是直接按显示在单元格上的2位小数的合计数,造成了 合计数字与上面的数字不相等。

barrylei 发表于 2013-1-28 17:22:00

为了实现你的用例,需要实现ICalculation接口,然后把你的实现赋给SummaryCell的Calculation属性。

    public sealed partial class Template1 : Template
    {
      public Template1()
      {
            InitializeComponent();
            this.YourCellName.ValueType = typeof(double); //YourCellName 是你要计算的那个Cell
            this.summaryCell1.Calculation = new MyCalculate();
            
      }
    }
    public class MyCalculate : ICalculation
    {
      public object Calculate(CalculationContext context)
      {
            double result = 0.0;
            if (context.Scope == CellScope.ColumnFooter)
            {
                object temp = null;
                for (int i = 0; i < context.GcMultiRow.RowCount; i++)
                {
                  temp = context.GcMultiRow.GetValue(i, "YourCellName");
                  if (temp != null && temp is double)
                  {
                        result += Math.Round((double)temp,2);
                  }
                }
            }
            return result;
      }

      public object Clone()
      {
            return new MyCalculate();
      }
    }


MultiRow缺省提供的SummaryCell都是以Cell的Value来计算的,为了实现你的用例,通过Math.Round函数先四舍五入到2位,然后再一个个加去起来。实现的思路就是这样,可能你要根据你的业务需求作适当的修改。
页: [1]
查看完整版本: MultiRow 合计行问题