2015-10-19 31 views
3

爲了討論的緣故,我將使用SalesTable/SalesLine如何做多選,以便父數據源上的多個選擇將顯示組合的子數據源

我有一個簡單的形式,有兩個數據源,SalesTableSalesLine,與SalesLine加入到SalesTable。有一個標題和線條網格。頭電網具有財產MultiSelect = Yes

當我選擇3分SalesTable從電網的記錄,是有辦法讓它從三個選定SalesTable記錄顯示所有SalesLine的記錄下網柵一些本土風格?

我知道我可以通過一些代碼以某種方式完成此操作,但我認爲這可以通過設計模式以某種方式通過表單和數據源屬性完成?對我來說,選擇/突出顯示三個標題記錄是沒有意義的,而AX只會使行 - 柵格僅顯示其中一個標題:子行對。

回答

4

您必須編寫代碼,標準的dynalink行爲不支持這一點,原因很充分。

請注意非標準形式的行爲可能會混淆用戶。同時選擇標題表中的所有記錄也很容易,但效果不佳!

像往常一樣,設置SalesLine數據源的JoinSource屬性SalesTableLinkType延遲),那麼重寫SalesLine數據源的linkActive方法:

public void linkActive() 
{ 
    SalesTable table; 
    QueryBuildDataSource ds = this.query().dataSourceNo(1); 
    ds.clearDynalinks(); 
    ds.clearRanges(); 
    for (table = salesTable_ds.getFirst(1) ? salesTable_ds.getFirst(1) : salesTable_ds.cursor(); table; table = salesTable_ds.getNext()) 
    { 
     ds.addRange(fieldNum(SalesLine,SalesId)).value(queryValue(table.SalesId)); 
    } 
    super(); 
} 

的dynalink被清除,並且範圍是由代碼添加用於標記或當前記錄。

如果標記了多於幾百個標頭,則SQL表達式可能會溢出。如果選擇太多標題,您可能應該嘗試通過拋出更加用戶友好的錯誤來避免這種情況。

+0

在AX12中的整個多選擇對我來說似乎是一個半熟的想法。當選擇多個時,取決於您最後點擊的是什麼,將確定所建立的鏈接。用例用於配置表,因此性能不應該成爲問題。我希望這是本土的一些時尚。 –

2

活動記錄只有一個,並且與該記錄進行連接。你將不得不編寫一些代碼。您需要根據父數據源選擇在子數據源上添加範圍。

相關問題