
# 场景
在报表服务插件的GetReportHeaders方法里创建的列,设置列宽无效

# 原因
报表的过滤框的显示隐藏列的字段有默认宽度,这个优先级较高

# 解决方法
编写过滤框的表单插件,修改显示隐藏列字段的默认宽度
```language
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;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
namespace HNKD.WZQ.Test.Plugin
{
[Kingdee.BOS.Util.HotUpdate]
[Description("【表单插件】合同列表过滤框,动态显示隐藏列")]
public class HTLB_FilterEdit : AbstractCommonFilterPlugIn
{
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
//获取隐藏列字段
ICommonFilterModelService filterModel = this.Model as ICommonFilterModelService;
if (filterModel == null)
return;
var fieldList = filterModel.ColumnObject.AllFieldList;
//遍历字段设置列宽
foreach (var item in fieldList)
{
//标题包含 '日期'
if (item.Caption.ToString().Contains("日期"))
{
//默认列宽
item.DefaultColWidth = 160;
}
if (item.Caption.ToString().Contains("人") || item.Caption.ToString().Contains("员"))
{
item.DefaultColWidth = 70;
}
if (item.Caption == "对方单位")
{
item.DefaultColWidth = 250;
}
//字段标识
if (item.Key == "FHTLX")
{
item.DefaultColWidth = 150;
}
if (item.Caption == "产品类型")
{
item.DefaultColWidth = 70;
}
if (item.Caption == "合同编码")
{
item.IsHyperlink = true;
}
}
}
}
}
```
# 效果

