2009-08-24 78 views
7

我使用VendTable網格的窗體,例如CustAccount字段。Dynamics ax 4.0,打開窗體而不在當前記錄上應用過濾器

我想放置按鈕,點擊哪個將打開所有客戶都可見的CustTable表單。

如果我只放置CustTable menuitem,然後單擊它將打開CustTable窗體,但在此窗體中只顯示一條記錄 - 一個與vendTable.CustAccount具有相同的AccountNum。

如何打開整個custTable?有沒有比創建按鈕更好的解決方案,然後使用ClassFactory :: FormRunOnClient來顯示錶單?

PS。我需要按鈕,所以人民幣 - >「轉到主表格」不算。

回答

6

問題是,VendTable記錄作爲參數應用於CustTable表單,然後創建一個dynalink。解決辦法是避免爭論。

重寫在CustTable顯示菜單項clicked方法是這樣的:

void clicked() 
{ 
    this.menufunction().run(new Args(element)); 
} 

這將調用CustTable形式只用和沒有記錄參數中的呼叫者對象。

0

您有2個選項,您可以創建一個按鈕並覆蓋其clicked()方法,或者使用MenuItemButton併爲其分配一個Action MenuItem。

使用MenuItems是最佳做法,因爲它允許您使用AX安全配置框架&。您可以將類關聯到MenuItem,並在類的main()方法中根據需要運行FormRunOnClient()。

3

我知道這是一個相當古老的問題,但如果有人來這裏尋找答案,只需在對象QueryBuildDataSource上調用方法clearDynalinks()即可。

QueryBuildDatasource qbds; 
; 


qbds = this.query().dataSourceTable(tablenum(MyTableName)); 
qbds.clearDynalinks(); 

// Next line is optional, it clears initial ranges 
qbds.clearRanges(); 

// if you need to add any ranges you can do it right after you clear the initial dynalinks/ranges 

例如,你已經創建了一個表格,並自動過濾你的,因爲Dynalinks是動態自動創建的數據源,可以通過把init()方法中下面的代碼,你的表格數據源解決問題

希望它有幫助...