【发布时间】:2011-06-09 16:49:48
【问题描述】:
我正在尝试在 AX 的对话框中创建自定义查找过滤器。
我已按照本文x++ filter lookup in dialog 中的说明进行操作,但在运行代码时出现堆栈跟踪错误——FormRun 对象未初始化。
我要做的是根据 ItemId EDT 的选择过滤 ConfigId EDT 的 lookup()。我已经准备好自定义 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());
}
这就是它不断收到堆栈跟踪错误的地方:
public void dialogPostRun(DialogRunbase _dialog)
{
;
super(_dialog);
**_dialog.formRun().controlMethodOverload(true);** // Causes Stack Trace error
_dialog.formRun().controlMethodOverloadObject(this);
}
我已尝试使用该对话框进行多种配置。当代码到达那个点时,它仍然有从 dialog() 方法传入的信息,但是当它去获取 FormRun 时,该对象是空白的。
有人可以帮我理解为什么没有与传入的 DiaglogRunBase 关联的 FormRun 对象吗?
谢谢。
【问题讨论】:
-
我的代码没有运行时错误。
-
那么我一定是在其他地方做错了什么。我没有让 FormRun 有效。
-
也许你是手动调用 dialogPostRun 还是做错了什么?您能否提供用于打开对话框的代码或任何其他可能与问题相关的代码?
标签: microsoft-dynamics x++ axapta