账表选中行合计功能原创
金蝶云社区-eris
eris
7人赞赏了该文章 1804次浏览 未经作者许可,禁止转载编辑于2022年01月24日 09:14:51

以应收款明细为例:

  1. 首先账表单据体需要开启允许多选,如下图:

    image.png

  2. 自定义一个表单插件(插件代码4)并注册,如下图:

    image.png

  3. 使用shift或ctrl键选中多行,按下alt键并把鼠标放到选中行地方,查看结果,如下图:

    image.png

  4. 插件代码:


using System;
using System.Data;
using System.ComponentModel;
using System.Collections.Generic;
using Kingdee.BOS.Core;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Report.PlugIn;
using Kingdee.BOS.Web.Report;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
namespace Kingdee.BOS.TestPlugIn.BillFormPlugin
{
    [HotUpdate]
    [Description("帐表选中行合计提示插件")]
    public class SelectedRowTipPlugIn : AbstractSysReportPlugIn
    {
       
        /// <summary>
        /// 实体行点击事件
        /// </summary>
        /// <param name="e"></param>
        public override void EntityRowClick(EntityRowClickEventArgs e)
        {
            base.EntityRowClick(e);
            if (this.View is SysReportView) //视图是帐表
            {
                var reportView = this.View as SysReportView;
                if (reportView.SelectedDataRows == null ||reportView.SelectedDataRows.Length == 0) return;
                var dt = reportView.SelectedDataRows[0].Table;
                List<Tuple<int,string>> summaryFields = new List<Tuple<int,string>>();//需要汇总的字段
                var columnIndex =  dt.Columns.IndexOf("FAmount");
                var tuple= Tuple.Create<int,string>(columnIndex,"本期应收");
                summaryFields.Add(tuple);
               //对所有需要合计的字段进行汇总
                 JSONArray jsonArr = new JSONArray();
                foreach (var sumField in summaryFields)
                {
                     JSONObject jsonObj = new JSONObject();
                     decimal dFieldSummary = 0;
                    foreach (var selectRow in reportView.SelectedDataRows)
                    {
                        dFieldSummary += decimal.Parse(selectRow.ItemArray[sumField.Item1].ToString());
                    }
                    jsonObj.Put("Value", dFieldSummary);
                    jsonObj.Put("Caption", sumField.Item2 + ": ");
                    jsonArr.Add(jsonObj);
                }
               //输出到前端
                if (jsonArr.Count > 0)
                {
                    reportView.GetControl<EntryGrid>("FList").SetSelectRowsTips(jsonArr);
                }
            }
        }
    }
}


赞 7