这两天客户有一个特别的需求,需要在某一个单据的列表中,打开当前有关联的其他相关单据列表(例如:同一个客户下的所有单据),同时需要固定过滤方案。(也就是说需要加载特定的过滤方案,其他过滤方案不显示出来)。看到这里就有一点难为了。在社区里面找了一圈,没有找到太有用的资料。然后通过其他秘密手段,研究出来了实现方式。现在分享给社区的各位同志们,需要的可以参考一下。特别是给新手小虾米们参考参考。交流QQ:87283202 凯文
注意:列表插件: 作用于继承了AbstractListPlugIn的插件。
public override void PrepareFilterParameter(FilterArgs e)
{
base.PrepareFilterParameter(e);
if (IsOtherLoad)
{
var field = this.ListModel.GetType().GetProperty("ListFilterModel", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); //这段代码找得太艰难了。
var listFilterModel = field.GetValue(this.ListModel) as Kingdee.BOS.Model.ListFilter.ListFilterModel;
var schemeList = listFilterModel.GetAllSchemeList(); //得到当前单据过滤方案列表
var removeSchemes = schemeList.Where(r => !r.SchemeName.Contains("方案名称")).ToList(); // 这里可以查询数据库得到当前所有单据的过滤方案信息,然后根据特定业务需要,进行构建
removeSchemes.ForEach(r => schemeList.Remove(r)); //遍历需要删除的过滤方案,进行删除操作
}
}
PS:这种需求不常见,有的话,找得心都碎了。 留给有缘人
推荐阅读