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

插件二开:单据插件.根据单据类型动态切换视图

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

插件二开:单据插件.根据单据类型动态切换视图

一、概述

本篇主要介绍单据插件.根据单据类型动态切换视图。


二、详情

客户案例:客户通过实体服务规则设置了单据类型在不同条件的值,在新增打开后,单据类型是按预期设置正确的,但单据类型对应的视图并未刷新。


以下通过【表单插件方式实现动态切换视图,参考如下:

using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.Linq;

namespace BOS.Debug.PCPlugIn
{
    /// <summary>
    /// 表单插件
    /// </summary>
    [System.ComponentModel.Description("表单插件---根据单据类型切换视图"),HotUpdate]
    public class BillPlugIn_BillTypeChangeView : AbstractBillPlugIn
    {
        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e); 
            
            //按单据类型切换视图(这里只是按当前案例需要放在AfterBindData,实际以业务需要调整如:BarItemClick)
            var billTypeId = ((DynamicObject)this.Model.GetValue("FBillTypeID"))[0] as String;
            this.BillTypeChanged(billTypeId); 
        }

        /// <summary>
        /// 获取单据类型对应的视图ID
        /// </summary>
        /// <param name="billTypeId">单据类型ID</param>
        /// <returns></returns>
        private string GetLayoutId(string billTypeId=null) {
            var billTypeField = this.View.BillBusinessInfo.GetBillTypeField();
            if (string.IsNullOrWhiteSpace(billTypeId))
            { 
                //获取单据类型ID
                //var enumList = billTypeField.BuildEnumList();
                billTypeId = ((DynamicObject)this.Model.GetValue(billTypeField))[0].ToString();
            }
            var BillType = billTypeField.BillTypeInfo.First(o => o["Id"].ToString() == billTypeId);
            var layoutId = BillType["LayoutSolution_Id"].ToString();
            return layoutId;
        }

        /// <summary>
        /// 切换单据类型(通过ShowForm刷新视图)
        /// </summary>
        /// <param name="billTypeId"></param>
        /// <param name="layoutId"></param>
        private void BillTypeChanged(string billTypeId)
        {
            //只在新增时可切换单据类型的视图
            if (this.View.OpenParameter.Status == OperationStatus.ADDNEW)
            {
                var layoutId = GetLayoutId(billTypeId);
                if (layoutId == this.View.OpenParameter.LayoutId) return;
                var para = new BillShowParameter();
                this.CopyCustomeParameter(para);
                para.OpenStyle.ShowType = ShowType.InCurrentForm;
                para.FormId = this.View.OpenParameter.FormId;
                para.DefaultBillTypeId = billTyp

插件二开:单据插件.根据单据类型动态切换视图

一、概述本篇主要介绍单据插件.根据单据类型动态切换视图。二、详情客户案例:客户通过实体服务规则设置了单据类型在不同条件的值,在新增...
点击下载文档文档为doc格式

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

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