
**【应用场景】**
在账表的过滤条件框上,按照快捷页签中的字段选择,动态设置分组汇总页签。
**【案例演示】**
<1>编写过滤界面插件,代码如下。
``` csharp
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.CommonFilter.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Util;
using System.Collections.Generic;
using System.ComponentModel;
namespace Kingdee.BOS.PlugInTest
{
[Description("【过滤插件】动态调整分组合计选中"), HotUpdate]
public class SummaryFilterPlugIn : AbstractCommonFilterPlugIn
{
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
// 动态构建汇总字段
// 动态构建选中的汇总字段
SummaryObject sumobj = ((ICommonFilterModelService)this.Model).SummaryObject;
if (e.Field.Key.EqualsIgnoreCase("FCheckBoxA"))
{
// 物料相关
Dictionary<string, string> kv = new Dictionary<string, string>();
kv["FMaterialName"] = "物料";
kv["FQty"] = "数量";
kv["FUnitName"] = "单位";
this.SummaryObjectHandler(e, sumobj, kv);
this.SummaryFieldHandler(e, sumobj, "FMaterialName");
}
else if (e.Field.Key.EqualsIgnoreCase("FCheckBoxB"))
{
// 单据相关
Dictionary<string, string> kv = new Dictionary<string, string>();
kv["FBillNo"] = "单据编号";
kv["FDocumentStatus"] = "状态";
this.SummaryObjectHandler(e, sumobj, kv);
this.SummaryFieldHandler(e, sumobj, "FBillNo");
}
SummarySet summary = this.View.GetControl<SummarySet>("FSummarySet");
summary.SetSummaryFields(sumobj.GetAllSummaryFields());
summary.SetSummaryRows(sumobj.GetSummaryFields());
}
private void SummaryObjectHandler(DataChangedEventArgs e, SummaryObject sumobj, Dictionary<string, string> kv)
{
bool flag = false;
if (bool.TryParse(e.NewValue.GetString(), out flag))
{
}
foreach (var item in kv)
{
SummaryField selectSummaryField = ((ICommonFilterModelService)this.Model).SummaryObject.GetField(item.Key);
if (selectSummaryField == n