【问题标题】:Using field value based on method value使用基于方法值的字段值
【发布时间】:2023-03-25 12:31:01
【问题描述】:

我创建了一个类对话框,其中有 1 个选择字段,称为 ReasonId

在这个类中,我有一个返回值的方法:

ReasonId  reasonId()
{
    return reasonId::ValueX;
}

另外,我有一个使用 find 方法的方法,带有基于上述枚举值的过滤器:

ReasonId  documentReasonId()
{
    return DocumentReasons::findByReason(this.reasonId()).Name;
}

在dialog方法中,我试图显示find方法返回的值,表中的值比较多,但是由于我是根据Reason搜索的,所以我只想显示这些值:

    public Object dialog()
{
    DialogGroup     dialogGroup;
    ;
    dialogRunbase = super();
    dialogGroup = dialogRunbase.addGroup();
    dialogGroup.caption("CaptionLabel");
    dialogReasonId  = dialogRunbase.addFieldValue(this.reasonId(), "Label1","Label2");
    return dialogRunbase;
}

我现在的配置方式是在这个对话框中显示我的目标,我不知道如何实现。

【问题讨论】:

  • 您的表DocumentReasons 是否可以包含多个具有相同ReasonId 的记录?
  • 是的,它可以,所以它可能必须返回多个名称,具有相同的 ReasonId。
  • 那么您究竟希望如何在网格中显示多个DocumentReasons.Name 值?在多行文本框中?以另一种方式?
  • 我想在下拉列表中显示名称值,其中只能选择 1 个原因。

标签: dialog lookup dynamics-ax-2012 x++


【解决方案1】:

我看不到您的方法DocumentReasons::findByReason() 中的代码,无论它获取单个记录(如果其中使用了firstOnly 关键字)还是多个记录。所以我不会在下面的例子中使用这种方法。

由于您要使用下拉列表,因此应使用FormComboBoxControl。您可以从这样的内容开始并根据需要进行修改:

public Object dialog()
{
    DocumentReasons documentReasons;
    FormComboBoxControl comboBox;
    Counter i;

    dialogRunbase = super();

    select count(RecId) from documentReasons
        where documentReasons.ReasonId == ReasonId::ValueX;

    comboBox = dialogRunbase.curFormBuildGroup().addControl(FormControlType::ComboBox, 'testName');
    comboBox.items(documentReasons.RecId);

    while select Name from documentReasons
        where documentReasons.ReasonId == ReasonId::ValueX
    {
        i++;

        comboBox.item(i);
        comboBox.text(documentReasons.Name);
    }

    return dialogRunbase;
}

我还没有在 AX 中测试过,但它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多