我試圖在表單中的數據源的字段中創建一個簡單的查找。Ax7 - 表單數據源字段中的自定義查找
表格和相關表格是BankAccountTable。
1.-將新字段BullCust(擴展EDT CustAccount)和字段組添加到新擴展BankAccountTable.MyExtension。
2.-創建了新的表單擴展BankAccountTable.MyExtension並添加了新的表單組。
這工作正常。但現在我想要一個更簡單的查找。在Ax2012,我會覆蓋BankAccountTable \數據源\ BankAccountTable \ BullCust \查找方法,像這樣的東西:
public void lookup(FormControl _formControl, str _filterStr)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup;
sysTableLookup = SysTableLookup::newParameters(tableNum(ExcEC_DocuTypeTable), _formControl);
queryBuildDataSource = query.addDataSource(tableNum(CustTable));
sysTableLookup.addLookupField(fieldNum(CustTable, AccountNum));
sysTableLookup.addLookupField(fieldNum(CustTable, Party));
sysTableLookup.addLookupField(fieldNum(CustTable, RecId));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
在AX7這不工作了。嘗試這種方法(基於https://ievgensaxblog.wordpress.com/2016/05/01/ax-7-how-to-override-form-data-source-field-methods-without-overlaying/):
3.-管理類創建查找:
public class BullFormBankAccountTable_Handler
{
public static BullFormBankAccountTable_Handler construct()
{
return new BullFormBankAccountTable_Handler();
}
public void BankAccountTable_BullCust_OnLookup(FormDataObject _formDataObject, FormControl _formControl, str _filterStr)
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
SysTableLookup sysTableLookup;
sysTableLookup = SysTableLookup::newParameters(tableNum(BullDocuTypeTable), _formControl);
queryBuildDataSource = query.addDataSource(tableNum(CustTable));
sysTableLookup.addLookupField(fieldNum(CustTable, AccountNum));
sysTableLookup.addLookupField(fieldNum(CustTable, Party));
sysTableLookup.addLookupField(fieldNum(CustTable, RecId));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
}
4.-類創建擴展,簽約和鏈接apropiated事件:
[ExtensionOf(formStr(BankAccountTable))]
final public class BullFormBankAccountTable_Extension
{
[FormDataSourceEventHandler(formDataSourceStr(BankAccountTable, BankAccountTable), FormDataSourceEventType::Initialized)]
public static void BankAccountTable_OnInitialized(FormDataSource _sender, FormDataSourceEventArgs _e)
{
var overrider = BullFormBankAccountTable_Handler::construct();
_sender.object(fieldNum(BankAccountTable, BullCust)).registerOverrideMethod(methodStr(FormDataObject, lookup),
methodStr(BullFormBankAccountTable_Handler, BankAccountTable_BullCust_OnLookup), overrider);
}
}
而且沒有結果。我調試過了,BullFormBankAccountTable_Extension.BankAccountTable_OnInitialized()被正確調用。但是最終的查找是標準查找,而不是礦山查找。 有關如何執行此操作的任何想法或示例?
(PS:版本AX7平臺更新9)
這可能不回答你的問題,但你可能會發現更容易覆蓋表單控件的查找,如果你有困難,壓倒一切的數據源字段的查詢。 – 10p