[英]Create a lookup filter for a dialox in Dynamics AX 4.0
我正在嘗試在 AX 的對話框中創建自定義查找過濾器。
我已按照這篇文章中的說明進行操作x++ 過濾器在對話框中查找,並且在運行我的代碼時收到堆棧跟蹤錯誤 -- FormRun object 未初始化 --。
我想要做的是根據從 ItemId EDT 中選擇的內容過濾 ConfigId EDT 的 lookup()。 我已准備好自定義 lookup() 到 go 並正常工作,只是無法從我的對話框中調用它。
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 時,object 是空白的。
有人可以幫我理解為什么沒有與傳入的 DiaglogRunBase 關聯的 FormRun object 嗎?
謝謝。
您是否檢查過您的 class 是否設置為以“Called From”運行?
這是覆蓋修改后的方法的示例代碼。 也許查找具有相同的要求:
public void dialogPostRun(DialogRunbase _dialog)
{
// Must be overriden to enable overriding modified method
;
_dialog.dialogForm().formRun().controlMethodOverload(true);
_dialog.dialogForm().formRun().controlMethodOverloadObject(this);
_dialog.formRun().controlMethodOverload(true);
_dialog.formRun().controlMethodOverloadObject(this);
super(_dialog);
}
對於自定義方法:
boolean Fld2_1_modified()
{
FormStringControl c = dialog.formrun().controlCallingMethod();
boolean ret;
;
ret = c.modified(); // Super() Call the FormControl ->modified
dlgCustomField.value(MyClass::someMethod(dlgCustomField.value())); // example
return ret;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.