簡體   English   中英

在 Dynamics AX 4.0 中為 dialox 創建查找篩選器

[英]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 嗎?

謝謝。

也許你應該在dialogPostRun方法中最后調用super(_dialog)

看看類似的解決方案一個更多的解決方案。

您是否檢查過您的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM