Hello,
I am working in AX7.
I have created a multiselect lookup field in my form. Lookup works fine.
But after selecting the values from the lookup and when i try to access the lookup again for a different row or for the same field, the previously selected values are still selected and it is not getting unselected until i have to unselect manually.
Can anyone suggest me why this is happening.
I have used the following code,
[FormControlEventHandler(formControlStr(Reasons, AssetTransactionType), FormControlEventType::Lookup)] public static void AssetTransactionType_OnLookup(FormControl sender, FormControlEventArgs e) { FormRun formRun = sender.formRun() as FormRun; TransactionType_TMP transactionType_TMP; TransactionType_TMP_Populate transactionType_TMP_Populate = new TransactionType_TMP_Populate(); transactionType_TMP_Populate.populateTempTable(transactionType_TMP); queryRun = new QueryRun(queryStr(TransactionType_TMPQuery)); queryRun.setCursor(transactionType_TMP); FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs; sysLookupMultiSelectCtrl = SysLookupMultiSelectCtrl::constructWithQueryRun(formRun,sender,queryRun/*,false,[tableNum(TransactionType_TMP),fieldNum(TransactionType_TMP,TransType)]*/); ce.CancelSuperCall(); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> [FormControlEventHandler(formControlStr(Reasons, AssetTransactionType), FormControlEventType::Modified)] public static void AssetTransactionType_OnModified(FormControl sender, FormControlEventArgs e) { FormDataSource reasonTable_ds = sender.formRun().dataSource("ReasonTable"); FormDataSource transactionType_TMP_ds = sender.formRun().dataSource("TransactionType_TMP"); SysQueryForm sysQueryForm = new SysQueryForm(queryRun); container reason; container reasonRecId; ReasonTable reasonTable; ReasonTable reasonUpdate; DefaultReasonTable defaultReasonTable; int value; int id; reasonTable = sender.formRun().dataSource(1).cursor(); reason = sysLookupMultiSelectCtrl.getSelectedFieldValues(); reasonRecId = sysLookupMultiSelectCtrl.get(); ttsbegin; select forupdate reasonUpdate where reasonUpdate.RecId == reasonTable.RecId; reasonUpdate.TransactionType = con2Str(sysLookupMultiSelectCtrl.getSelectedFieldValues(),';'); reasonUpdate.update(); reasonTable_ds.research(true); //queryRun.detach(); //queryRun.saveUserSetup(false); //reasonTable_ds.refresh(); //transactionType_TMP_ds.research(); //transactionType_TMP_ds.refresh(); while select forupdate defaultReasonTable where defaultReasonTable.ReasonRecId == reasonTable.RecId { defaultReasonTable.delete(); } defaultReasonTable.clear(); defaultReasonTable.initValue(); for(value = 1; value <= conLen(reasonRecId); value++) { defaultReasonTable.ReasonRecId = reasonTable.RecId; for(value = 1; value <= conLen(reason); value++) { defaultReasonTable.TransactionType = conPeek(reason,value); defaultReasonTable.insert(); } } ttscommit; }
Thanks