BOS运行时-报表-实现选择中合计tips

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

BOS运行时-报表-实现选择中合计tips

星空标准列表,支持配置实现选中行合计,报表默认没有支持,想要实现类似功能,需要做表单插件开发,实现的核心是,在表单插件里面构造合计tips数据,然后发给前端控件显示。


调用单据体控件方法如下:

this.View.GetControl<EntryGrid>("FList").SetSelectRowsTips(ja);
  1. 新建一个直接SQL报表或者简单报表(数据源需要插件实现)

  2. 新建一个表单插件,指定代码设置合计行


实现效果如下:

image.webp


参考代码:

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Core.Util;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Util;
using Kingdee.BOS.Web.Report.SQLReport;
using Kingdee.BOS.WebApi.FormService;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Cloud.BOS.Support.Report.SQLReport
{
    [HotUpdate]
    public class SqlRptSelRowPlugin : AbstractSysReportPlugIn
    {
        public override void EntityRowClick(EntityRowClickEventArgs e)
        {
            //获取选中行
            var selData = (this.View as SQLReportView).SelectedDataRows;

            if (selData == null || selData.Length == 0) return;

            var ja = new JSONArray();

            List<string> summaryFieldList = new List<string>()
            {
                "FQTY",
                "FALLAMOUNT"
            };



            decimal sumQty = 0;
            decimal sumAmount = 0;
            //计算数量和金额
            for (int i = 0; i < selData.Length; i++)
            {
                var row = selData[i];
                if (row.Table.Columns.Contains("FQTY"))
                {
                    sumQty += Convert.ToDecimal(row["FQTY"]);
                }

                if (row.Table.Columns.Contains("FALLAMOUNT"))
                {
                    sumAmount += Convert.ToDecimal(row["FALLAMOUNT"]);
                }
            }

            var joQty = new JSONObject();
            joQty.Put("Value", sumQty.ToString("N2"));
            joQty.Put("Caption", "数量合计: ");
            ja.Add(joQty);

            var joAmount = new JSONObject();
            joAmount.Put("Value", sumAmount.ToString("N3"));
            joAmount.Put("Caption", "金额合计: ");
            ja.Add(joAmount);


            this.View.GetControl<EntryGrid>("FList").SetSelectRowsTips(ja);
        }

        public override void BarItemClick(BarItemClickEventArgs e)
        {
            if (e.BarItemKey.EqualsIgnoreCase("btnExportCustomer"))
            {
                //获取报表左侧勾选的选择数据
                var selData = (this.View as SQLReportView).SelectedDataRows;
                //遍历DataRows[]数组,获取选择行数据
            }
        }

    }
}


BOS运行时-报表-实现选择中合计tips

星空标准列表,支持配置实现选中行合计,报表默认没有支持,想要实现类似功能,需要做表单插件开发,实现的核心是,在表单插件里面构造合计...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息