二开案例.表单插件.向导式动态表单

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

二开案例.表单插件.向导式动态表单

【应用场景】 使用表单插件控制向导式动态表单。

【案例演示】新建向导式动态表单,使用表单插件控制该向导式动态表单,例如步骤切换前事件,步骤切换后事件,跳转到指定步骤等。

【实现步骤】

<1>新建向导式动态表单,创建步骤参考:

【二开案例.元模型.向导式动态表单】https://vip.kingdee.com/article/157438440450016768


<2>编写表单插件,代码如下。

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args.WizardForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.WizardForm;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【表单插件】向导式动态表单
    /// https://vip.kingdee.com/article/157454074366437632
    /// </summary>
    [Description("【表单插件】向导式动态表单"), HotUpdate]
    public class WizardStepChangedWizardFormPlugIn : AbstractWizardFormPlugIn
    {
        /// <summary>
        /// 操作步骤切换前事件
        /// </summary>
        /// <param name="e"></param>
        public override void WizardStepChanging(WizardStepChangingEventArgs e)
        {
            base.WizardStepChanging(e);
            if (e.UpDownEnum == 1)
            {
                // 下一步
                if (e.OldWizardStep.Key.Equals("FWizard0", StringComparison.OrdinalIgnoreCase))
                {
                    var phone = this.Model.GetValue("F_Jac_Text") as string;
                    if (string.IsNullOrWhiteSpace(phone))
                    {
                        this.View.ShowWarnningMessage("请输入手机号码!");
                        e.Cancel = true;
                        return;
                    }
                    if (phone == "666")
                    {
                        // 直接跳转到第三步
                        e.JumpWizardStepKey = "FWizard2";
                    }
                    return;
                }
                if (e.OldWizardStep.Key.Equals("FWizard1", StringComparison.OrdinalIgnoreCase))
                {
                    var smsCode = this.Model.GetValue("F_Jac_Text1") as string;
                    if (string.IsNullOrWhiteSpace(smsCode))
                    {
                        this.View.ShowWarnningMessage("请输入验证码!");
                        e.Cancel = true;
                    }
                    return;
                }
            }
            else if (e.UpDownEnum == 2)
            {
                // 上一步
                // TODO
            }
        }
        /// <summary>
        /// 操作步骤切换后事件
        /// </summary>
        /// <param name="e"></param>
        public override void WizardStepChanged(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.WizardForm.WizardStepChangedEventArgs e)
        {
            base.WizardStepChanged(e);
            if (e.UpDownEnum == 1)
            {
                // 下一步
                var msg = string.Format("手机号码:{0},验证码:{1}", this.Model.GetValue("F_Jac_Text"), this.Model.GetValue("F_Jac_Text1"));
                this.View.ShowMessage(msg);
            }
        }
        /// <summary>
        /// 点击完成按钮后,触发窗体关闭事件
        /// </summary>
        /// <param name="e"></param>
        public override void ButtonClick(ButtonClickEventArgs e)
        {
            base.ButtonClick(e);
            if (e.Key.Equals("FFINISH", StringComparison.OrdinalIgnoreCase))
            {
                // 点击完成按钮
                var userName = this.Model.GetValue("F_Jac_Text2") as string;
                if (string.IsNullOrWhiteSpace(userName))
                {
                    this.View.ShowWarnningMessage("请输入用户名!");
                    e.Cancel = true;
                }
            }
        }
    }
}

<3>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<4>给新建的向导式动态表单注册表单插件,保存元数据,开发完毕。




现在可以登录业务站点,打开向导式动态表单,验证下插件的控制效果啦。

步骤切换前事件:


步骤切换后事件:

---------------------------------------------------------------------------------------------------------




【参考资料】

【二开案例.元模型.向导式动态表单】https://vip.kingdee.com/article/157438440450016768

---------------------------------------------------------------------------------------------------------














【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/9475103091852569



二开案例.表单插件.向导式动态表单

【应用场景】 使用表单插件控制向导式动态表单。【案例演示】新建向导式动态表单,使用表单插件控制该向导式动态表单,例如步骤切换前事件...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息