列表插件-过滤方案-自定义显示指定过滤方案原创
金蝶云社区-儒雅的大凯文
儒雅的大凯文
5人赞赏了该文章 154次浏览 未经作者许可,禁止转载编辑于2024年11月13日 11:55:49

这两天客户有一个特别的需求,需要在某一个单据的列表中,打开当前有关联的其他相关单据列表(例如:同一个客户下的所有单据),同时需要固定过滤方案。(也就是说需要加载特定的过滤方案,其他过滤方案不显示出来)。看到这里就有一点难为了。在社区里面找了一圈,没有找到太有用的资料。然后通过其他秘密手段,研究出来了实现方式。现在分享给社区的各位同志们,需要的可以参考一下。特别是给新手小虾米们参考参考。交流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:这种需求不常见,有的话,找得心都碎了。  留给有缘人 

图标赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!