账表选中行合计功能原创
7人赞赏了该文章
2,253次浏览
编辑于2022年01月24日 09:14:51
以应收款明细为例:
首先账表单据体需要开启允许多选,如下图:
自定义一个表单插件(插件代码4)并注册,如下图:
使用shift或ctrl键选中多行,按下alt键并把鼠标放到选中行地方,查看结果,如下图:
插件代码:
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
7人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读