【devexpress】Gridcontorl分组时自定义底部页脚求和功能

再使用Gridcontorl的时候页脚的求和平时用起来都是非常方便的。不过有的时候需要普通的求和无法满足我们就可以通过自定义的方式来进行

第一种方法

使用求和的两列数据的总额进行计算毛利率百分比。在绑定数据后就可以直接使用

优点简单方便

缺点只能对总数的汇总计算,如果分组的页脚也有数据是无法通过这种方法来计算

 //自定义求和
           gridColumn14.SummaryItem.SetSummary(DevExpress.Data.SummaryItemType.Custom,string.Format("{0:N2}", (Convert.ToDouble(gridView1.Columns["销售金额"].SummaryItem.SummaryValue) - Convert.ToDouble(gridView1.Columns["公司成本"].SummaryItem.SummaryValue)) / Convert.ToDouble(gridView1.Columns["销售金额"].SummaryItem.SummaryValue)*100)+"%");

第二种

不写代码,在设计器中进行设置

首先打开设计器

《【devexpress】Gridcontorl分组时自定义底部页脚求和功能》

在设计器中自己添加好分组列和数据列,此处省略。然后添加页脚求和

Group Summary Items。点击添加,并在右侧填写好参数。就可以实现页脚分组求和了

《【devexpress】Gridcontorl分组时自定义底部页脚求和功能》

 

第三种方法

在CustomSummaryCalculate实践中进行计算

优点,可以计算分组汇总,总数汇总。可定义程度高

decimal num1 =0;
        decimal num2 =0;
        /// <summary>
        /// 自定义求和
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gridView1_CustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
        {
            //如果是分组的汇总
            if (e.IsGroupSummary)
            {
                if((e.Item as GridSummaryItem).FieldName == "gridColumn14")
                {
                    //开始计算
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
                    {
                        e.TotalValue = 0;
                        num1 = 0;
                        num2 = 0;
                    }
                    else
                    //正在计算
                    if(e.SummaryProcess== DevExpress.Data.CustomSummaryProcess.Calculate)
                    {
                        num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
                        num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司成本"));
                    }
                    else //计算完毕
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
                    {
                        e.TotalValue = string.Format("{0:N2}", (num1 - num2) / num1 * 100) + "%";
                    }
                }
                else if ((e.Item as GridSummaryItem).FieldName == "gridColumn15")
                {
                    //开始计算
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
                    {
                        e.TotalValue = 0;
                        num1 = 0;
                        num2 = 0;
                    }
                    else
                    //正在计算
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
                    {
                        num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
                        num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "分成金额"));
                    }
                    else //计算完毕
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
                    {
                        e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
                    }
                }
                else if ((e.Item as GridSummaryItem).FieldName == "gridColumn16")
                {
                    //开始计算
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
                    {
                        e.TotalValue = 0;
                        num1 = 0;
                        num2 = 0;
                    }
                    else
                    //正在计算
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
                    {
                        num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
                        num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司利润"));
                    }
                    else //计算完毕
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
                    {
                        e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
                    }
                }
            }//如果是求和的汇总
            else if (e.IsTotalSummary)
            {
                //总毛利率
                if ((e.Item as GridSummaryItem).FieldName == "gridColumn14")
                {
                    
                    //Initialization   加载gridcontrol控件
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
                    {
                        e.TotalValue = 0;
                        num1 = 0;
                        num2 = 0;
                    }
                    else
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
                    {

                        num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
                        num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司成本"));

                    }
                    else if(e.SummaryProcess== DevExpress.Data.CustomSummaryProcess.Finalize)
                    {
                        e.TotalValue = string.Format("{0:N2}", (num1 - num2) / num1 * 100) + "%";
                    }
                }
                else if((e.Item as GridSummaryItem).FieldName == "gridColumn15")
                {
                    //Initialization   加载gridcontrol控件
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
                    {
                        e.TotalValue = 0;
                        num1 = 0;
                        num2 = 0;
                    }
                    else
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
                    {

                        num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
                        num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "分成金额"));

                    }
                    else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
                    {
                        e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
                    }
                }
                else if ((e.Item as GridSummaryItem).FieldName == "gridColumn16")
                {
                    //Initialization   加载gridcontrol控件
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start)
                    {
                        e.TotalValue = 0;
                        num1 = 0;
                        num2 = 0;
                    }
                    else
                    if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate)
                    {

                        num1 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "销售金额"));
                        num2 += Convert.ToDecimal(gridView1.GetRowCellDisplayText(e.RowHandle, "公司利润"));

                    }
                    else if (e.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize)
                    {
                        e.TotalValue = string.Format("{0:N2}", num2 / num1 * 100) + "%";
                    }
                }
            }

    原文作者:Sqsdhc
    原文地址: https://blog.csdn.net/qq_38977099/article/details/120586500
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞