在Dynamics AX 4.0中为dialox创建查找过滤器

问题描述 投票:1回答:2

我正在尝试在AX中的对话框中创建自定义查找过滤器。

我按照这篇文章x++ filter lookup in dialog中的说明操作,当我运行我的代码时,我收到了堆栈跟踪错误 - FormRun对象未初始化。

我想要做的是根据ItemId EDT中的选择过滤ConfigId EDT的lookup()。我有自定义查找()准备好去正常工作,我只是无法从我的对话框中调用它。

public Object dialog(DialogRunbase _dialog, boolean _forceOnClient)
{
    DialogRunBase   dialog;
    ;

    dialog = super(_dialog, true);

    dialog.caption('@RID2885');

    dfItem = dialog.addField(typeid(ItemId));
    dfInventLoc = dialog.addField(typeid(InventLocationId));
    dfReplaceCost = dialog.addField(typeid(PdsCost));
    dfItemConfig = dialog.addField(typeid(ConfigId));
    dfColorId = dialog.addField(typeid(InventColorId), '@RID101');

    return dialog;
}

这是对lookup()的调用:

void Fld_7_lookup()
{
    Formrun fr = this.dialogModify().parmDialog();
    Object control = fr.controlCallingMethod();    
    ;

    ConfigTable::lookupConfigIdSimple(control, dfItem.value());    
}

这是它不断收到Stack Trace错误的地方:

public void dialogPostRun(DialogRunbase _dialog)
{
    ;
     super(_dialog);
    **_dialog.formRun().controlMethodOverload(true);** // Causes Stack Trace error
    _dialog.formRun().controlMethodOverloadObject(this);       
}

我在对话框中尝试了多种配置。当代码到达该点时,它仍然具有从dialog()方法传入的信息,但是当它获取FormRun时,该对象为空。

有人可以帮我理解为什么没有与传入的DiaglogRunBase关联的FormRun对象?

谢谢。

microsoft-dynamics x++ axapta
2个回答
0
投票

也许你应该在qazxsw poi方法中最后调用qazxsw poi。

看看super(_dialog)dialogPostRun


0
投票

您是否检查过您的课程是否设置为“Called From”?

以下是覆盖已修改方法的示例代码。也许查找具有相同的要求:

similar solution

而对于自定义方法:

one more
© www.soinside.com 2019 - 2024. All rights reserved.