繁体   English   中英

AX2009更新表单字段值

[英]AX2009 update form field value

我想自动更新NumberSequenceTable表单的Format字段。 目的是帮助用户手动输入数据。

例如,最好用Number Number sequence codeLargest字段的连接值更新该字段。

在此处输入图片说明

考虑了一段时间后,我决定更改基础表 NumberSequenceTable。 通过将另一种情况添加到已经存在的switch语句中,我更改了其“ modifiedField”方法。 我认为在这种情况下,这是公认的最佳做法:

public void modifiedField(fieldId _fieldId)
{
    #Define.DefaultCleanInterval(24)
    #Define.DefaultCacheSize(10)

    str sequenceFormat;


    super(_fieldId);

    switch (_fieldId)
    {
        ....

        //BEGINING
        case fieldnum(NumberSequenceTable, NumberSequence):
            if (this.NumberSequence && this.Highest && !this.Format)
            {

               sequenceFormat = System.Text.RegularExpressions.Regex::Replace(int2str(this.Highest), "[0-9]", "#");
               this.Format = strFmt("%1_%2",this.NumberSequence, sequenceFormat);

            }
            break;
         //END 

        default :
            break;
    }
} 

我以前的解决方案涉及在form字段上重写“ enter”方法。 但是,这与最佳做法不符。 为了提供信息,我在这里粘贴初始解决方案。

public void enter()
{
    str sequenceNode;
    str sequenceValue;
    str maxValue;
    str formatValue;
    ;

    super();


    //Get required fields value
    sequenceNode = numberSequenceTable_ds.object(fieldnum(NumberSequenceTable,NumberSequence)).getValue();
    maxValue = numberSequenceTable_ds.object(fieldnum(NumberSequenceTable,Highest)).getValue();
    formatValue = numberSequenceTable_ds.object(fieldnum(NumberSequenceTable,Format)).getValue();

    if(sequenceNode && maxValue && !formatValue) {

    //Match regex pattern
    maxValue =  System.Text.RegularExpressions.Regex::Replace(maxValue, "[0-9]", "#");
    sequenceValue = strFmt("%1_%2",sequenceNode,maxValue);

    //Change field value
    numberSequenceTable_ds.object(fieldnum(NumberSequenceTable,Format)).setValue(sequenceValue);
    this.update();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM