You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不关闭对话框时验证Dynamics 365 FFO的DialogField?

问题描述

在Dynamics 365 FFO中,希望在不关闭对话框(不在closeOK方法中)的情况下实时验证DialogField的输入值,当前代码如下:

class myClassCaller
{
    MyClassDialog::MyPromtDialog(`parameters`);
}


class MyClassDialog 
{
  static container MyPromtDialog(`parameters`)
  {
    DialogField    myDialogField;
    Dialog         dialog;

    // 其他初始化代码..........

    myDialogField = dialog.addField(extendedtypestr(MYEDT),"Label","Label");

    // 希望在这里检查/验证DialogField的值

    if (! dialog.run())
        return ['', ''];

    // 后续处理逻辑.....
    return localContainer;
  }
}

请问是否有办法拦截输入到myDialogField中的值?

解决方案

有两种常用方式可以实现实时拦截并验证DialogField的输入值:

1. 注册modified事件处理方法

通过给DialogField注册自定义的modified方法,在用户输入值并离开字段时触发验证逻辑:

static container MyPromtDialog(`parameters`)
{
    DialogField    myDialogField;
    Dialog         dialog;

    // 其他初始化代码..........

    myDialogField = dialog.addField(extendedtypestr(MYEDT),"Label","Label");
    
    // 注册modified事件的自定义处理方法
    myDialogField.registerOverrideMethod(methodStr(FormStringControl, modified), methodStr(MyClassDialog, myDialogField_Modified), this);

    if (! dialog.run())
        return ['', ''];

    // 后续处理逻辑.....
    return localContainer;
}

// 自定义的modified事件处理方法
public boolean myDialogField_Modified(FormStringControl _control)
{
    boolean ret = _control.modified();
    str inputValue = _control.text();

    // 在这里编写你的验证逻辑
    if (strLen(inputValue) < 5)
    {
        error("输入值长度不能小于5位!");
        // 可清空输入或聚焦回字段
        _control.text('');
        _control.setFocus();
        ret = false;
    }

    return ret;
}

2. 利用EDT的validate方法

如果MYEDT是自定义扩展数据类型,可直接在EDT的validate方法中编写验证逻辑,所有使用该EDT的DialogField都会自动触发验证:

  1. 打开MYEDT的扩展数据类型设计器
  2. 重写validate方法,添加验证逻辑:
public boolean validate(Common _record)
{
    boolean ret = super(_record);
    str inputValue = this.valueStr();

    if (strLen(inputValue) < 5)
    {
        error("输入值长度不能小于5位!");
        ret = false;
    }

    return ret;
}

内容的提问来源于stack exchange,提问作者ulisses

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:10:33