电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开案例.列表插件.打开F8列表时指定快捷过滤条件

来源:金蝶云社区作者:金蝶2024-09-233

二开案例.列表插件.打开F8列表时指定快捷过滤条件

【应用场景】

打开F8列表时指定快捷过滤条件。


【案例演示】

采购订单,打开物料的F8列表时,将采购订单单据头上的计量单位字段的值,传递给物料F8列表的快捷过滤字段基本单位,并参与列表过滤。



【实现步骤】

<1>编写列表插件,代码如下。

using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Core.ListFilter;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【列表插件】打开F8列表时指定快捷过滤条件
    /// </summary>
    [Description("【列表插件】打开F8列表时指定快捷过滤条件"), HotUpdate]
    public class SetQuickFilterRowListPlugIn : AbstractListPlugIn
    {
        public override void PrepareFilterParameter(FilterArgs e)
        {
            base.PrepareFilterParameter(e);
            if (!this.ListView.OpenParameter.IsBaseList())
            {
                return;
            }
            if (this.View.ParentFormView == null || !this.View.ParentFormView.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("PUR_PurchaseOrder"))
            {
                return;
            }
            // 获取源单上的计量单位的值
            var value = this.View.ParentFormView.Model.GetValue("F_Jac_Base") as DynamicObject;
            if (value == null || value["Name"] == null)
            {
                return;
            }
            var unitName = value["Name"].ToString();
            if (string.IsNullOrWhiteSpace(unitName))
            {
                return;
            }
            // 基本单位过滤字段的字段名
            var filterFieldName = "FBaseUnitId.FName"; // 基础资料.名称
            //var filterFieldName = "FBaseUnitId.FNumber";// 基础资料.编码
            var filterModel = this.View.GetService<IListFilterModelService>();
            if (filterModel != null
                && filterModel.QuickFilterObject != null
                && filterModel.QuickFilterObject.FilterRows != null
                && filterModel.QuickFilterObject.FilterRows.Count > 1)
            {
                var hasRow = false;
                foreach (var filterRow in filterModel.QuickFilterObject.FilterRows)
                {
                    if (filterRow.FilterField.FieldName.EqualsIgnoreCase(filterFieldName))
                    {
                        filterRow.Value = unitName;
                        hasRow = true;
                    }
                }
                if (!hasRow)
                {
                    CreateFilterRow(filterModel.QuickFilterObject, filterFieldName, "等于", unitName);
                }
                this.ListView.Model.FilterParameter.QuickFilterString = filterModel.GetQuickFilte

二开案例.列表插件.打开F8列表时指定快捷过滤条件

【应用场景】打开F8列表时指定快捷过滤条件。【案例演示】采购订单,打开物料的F8列表时,将采购订单单据头上的计量单位字段的值,传递给物...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信