OnChangeConvertRuleEnumList事件

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

OnChangeConvertRuleEnumList事件

此事件为表单插件事件,注册在需要下推或选单的当前单据里,用来控制选单页面转换规则的显示。

示例:单据A到单据B有两个转换规则,现在要控制单据B在选单的时候不同的单据类型使用不同的转换规则,具体处理如下:

  1. 编写表单插件,重写BeforeDoOperation和OnChangeConvertRuleEnumList事件,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;

namespace Kingdee.BOS.TestPlugIn22.FormPlugin
{
    [HotUpdate]
    [Description("单据测试插件")]
      public class TestFormPlugIn : AbstractBillPlugIn
    {

        private bool _isDraw = false; //是否为选单操作

        /// <summary>
        /// 选单时根据不同的单据类型显示转换规则
        /// </summary>
        /// <param name="e"></param>
        public override void OnChangeConvertRuleEnumList(Core.List.PlugIn.Args.ChangeConvertRuleEnumListEventArgs e)
        {
            base.OnChangeConvertRuleEnumList(e);
            if (this._isDraw)
            {
                var statusField = this.View.BillBusinessInfo.GetBillTypeField();
                var statusObj = this.Model.GetValue(statusField) as DynamicObject;
                if (statusObj != null)
                {
                    if (statusObj["Name"].ToString().Equals("单据类型1")) //EnumId为转换规则唯一标识
                    {
                        e.ConvertRuleEnumList.RemoveAll(x => x.EnumId != "c9b41092-f23d-4888-891d-de1faeb7b1a8");
                    }
                    else if (statusObj["Name"].ToString().Equals("单据B类型2"))
                    {
                        e.ConvertRuleEnumList.RemoveAll(x => x.EnumId != "1299669a-733b-475f-b651-a0e2aa916500");
                    }
                }
            }
        }

        /// <summary>
        /// 操作前事件,确定什么操作
        /// </summary>
        /// <param name="e"></param>
        public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
        {
            base.BeforeDoOperation(e);
            this._isDraw = false;
            if (e.Operation.FormOperation.Operation == "Draw")
            {
                this._isDraw = true;
            }
        }
    }

2. 单据B上注册表单插件

3. 运行效果,单据类型1显示转换规则类型1,单据B类型2显示转换规则类型2.

OnChangeConvertRuleEnumList事件

此事件为表单插件事件,注册在需要下推或选单的当前单据里,用来控制选单页面转换规则的显示。示例:单据A到单据B有两个转换规则,现在要控...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息